在使用OracleParameters时,CommandText 中的参数要以":"开头,不能包含@等特殊字符。而在其它地方引用到此参数时可以不必加上":",程序会自动为其加上":"
OracleCommand oracmd = oracon.CreateCommand();
oracmd.CommandText = "select
gas_user_no,vol_page,user_name,user_address,unit from gas_meter where
gas_user_no = :gas_userno";
if (!oracmd.Parameters.Contains("gas_userno"))
{
oracmd.Parameters.Add(new
OracleParameter("gas_userno", OracleDbType.Varchar2,
ParameterDirection.Input));
}
oracmd.Parameters["gas_userno"].Value = “666666”
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = oracmd;
DataTable dt = new DataTable();
da.Fill(dt);
OracleDataReader dr = oracmd.ExecuteReader();
以下为转载内容:
当 CommandType 属性设置为StoredProcedure
时,CommandText 属性应设置为存储过程的名称。如果存储过程名称包含任何特殊字符,则可能会要求用户使用转义符语法。当调用
Execute 方法之一时,该命令将执行此存储过程。
用于 Oracle 的 .NET Framework 数据提供程序在向由CommandType.Text 的OracleCommand
调用的 SQL 语句传递参数时不支持问号 (?) 占位符。在这种情况下,必须使用命名的参数。例如:
复制代码
示例
下面的示例创建一个 OracleCommand 并显示其参数。要完成此任务,请向该方法传递一个OracleConnection、一个查询字符串(它是 SQL SELECT 语句)和一个OracleParameter 对象数组。
public void CreateOracleCommand(OracleConnection connection, string queryString, OracleParameter[] myParamArray) { OracleCommand command = new OracleCommand(queryString, connection); command.CommandText = "SELECT * FROM Emp WHERE Job = :pJob AND Sal = :pSal"; for (int j = 0; j < myParamArray.Length; j++) command.Parameters.Add(myParamArray[j]); string message = ""; for (int i = 0; i < command.Parameters.Count; i++) message += command.Parameters[i].ToString() + "\n"; Console.WriteLine(message); using (OracleDataReader row = command.ExecuteReader()) { while(row.Read()) { Console.WriteLine(row.GetValue(0)); } } }