在 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”,它会在你声明参数的地方搜索匹配的参数名称,如果不匹配,查询就会中断。
我不确定是否应该在 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”,它会在你声明参数的地方搜索匹配的参数名称,如果不匹配,查询就会中断。