代码之家  ›  专栏  ›  技术社区  ›  Jimenemex

在SQL参数值周围添加引号?

  •  0
  • Jimenemex  · 技术社区  · 6 年前

    我不确定是否应该添加单引号 '' 当SQL参数是一个已经用数据填充的字符串值时,它的值。我的想法是我没有,因为通过使用 OracleParameter 构造函数,它将自动将其数据类型更改为字符串。

    具体来说,我应该这样做吗: '@c' 刚刚结束 @c 执行此操作时: SELECT @c FROM Dual 什么时候 @ C 是否已将字符串放入 Oracle参数 建造师?

    string calcDateFormat = "Some Data";
    
    try
    {
        string sql = "SELECT @c ColumnName FROM Dual";
        // Or should it be this
        string sql = "SELECT '@c' ColumnName FROM Dual";
    
        using(OracleCommand command = new OracleCommand(sql, this.Connection))
        {
            OracleDataAdapter adapter = new OracleDataAdapter(command);
            adapter.SelectCommand.Parameters.Add(new OracleParameter("@c", OracleDbType.Varchar2, calcDateFormat, ParameterDirection.Output));
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);
            return dataset;
        }
    }
    catch (OracleException ex)
    {
        throw ...
    }
    
    // SELECT => 
    //        Column: ColumnName
    //        Row:    Some Data
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Parth Kale    6 年前

    不,不需要添加引号,因为下面的代码工作正常,

     string sql = "SELECT @c ColumnName FROM Dual";
    

    原因是,如果编写“@c”,它将在声明参数的位置搜索匹配的参数名,而不匹配查询将中断。

        2
  •  1
  •   Schytheron    6 年前

    我想你可以把它当作 string sql = "SELECT @c FROM Dual"; 没有单引号。这至少是我用PHP编写SQL查询的方式。不过,我不知道C和Oracle的规则是否不同。

    你回答问题的最好机会是尝试两种方法,看看会发生什么。