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

Add quotes around SQL parameter value?

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

具体来说,我应该这样做: '@c' over just @c 这样做时: SELECT @c FROM Dual@c 已经是一个字符串时,将其放入 OracleParameter构造函数?

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

我想你可以保持 string sql = "SELECT @c FROM Dual"; 不带单引号。这至少是我在 PHP 中编写 SQL 查询的方式。但是我不知道 C# 和 Oracle 的规则是否不同。

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

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

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

原因是如果你写“@c”,它会在你声明参数的地方搜索匹配的参数名称,如果不匹配,查询就会中断。