我不确定是否应该在SQL参数周围添加单引号''
,因为它是一个已经填充了数据的字符串值。我的想法是我没有,因为通过使用OracleParameter
构造函数,它会自动将其数据类型更改为字符串。
具体来说,我应该这样做:'@c'
执行此操作后只需@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 A = "A";
string A1 = "A";
string B = "AB".Substring(0,1);
Console.WriteLine("{0}", object.ReferenceEquals(A, A1)); //Returns True
Console.WriteLine("{0}", object.ReferenceEquals(A, B)); //Returns Flase
答案 0 :(得分:1)
我认为你可以将它保持为string sql = "SELECT @c FROM Dual";
而不使用单引号。这至少是我在PHP中编写SQL查询的方式。但我不知道C#和Oracle的规则是否不同。
回答问题的最佳机会是尝试两种方法,看看会发生什么。
答案 1 :(得分:1)
不需要添加引号,因为下面的代码可以正常工作,
string sql = "SELECT @c ColumnName FROM Dual";
原因是如果您编写'@c',它将在您声明参数的位置搜索匹配的参数名称,并且它不会与查询中断相匹配。