使用C#中的用户定义值调用Oracle存储过程输出参数

时间:2014-06-06 19:03:19

标签: c# asp.net

我正在使用下面的oracle SP并尝试在C#代码中调用此SP,但是在调用中接收到“错误数量或类型的参数”。如何在C#代码中调用此过程。请参阅下面我正在使用的C#代码。

PROCEDURE UPDATE_KeyValue(
PAR_ID IN VARCHAR2,
PAR_STATUS OUT VARCHAR2 )
IS
BEGIN
--
PAR_STATUS := 'OK';
--
UPDATE TableName SET Key = 'Y'
 WHERE ID= PAR_ID 
--
COMMIT;
--
END UPDATE_KeyValue;

C#代码:

cmd.CommandText = "UPDATE_KeyValue";
cmd.CommandType = CommandType.StoredProcedure;

OracleParameter PAR_ID1 = new OracleParameter();
PAR_ID1.ParameterName = "PAR_ID ";
PAR_ID1.OracleDbType = OracleDbType.Varchar2;
PAR_ID1.Direction = System.Data.ParameterDirection.Input;
PAR_ID1.Value = 131;
cmd.Parameters.Add(PAR_ID1);

OracleParameter PAR_STATUS1 = new OracleParameter();
PAR_STATUS1.ParameterName = "PAR_STATUS";
PAR_STATUS1.OracleDbType = OracleDbType.Varchar2;
PAR_STATUS1.Direction = ParameterDirection.Output;
cmd.Parameters.Add(PAR_STATUS1);

cmd.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:0)

我将命令对象名称更改为cmd1,因为我使用cmd作为上一个命令,我也添加了参数大小PAR_STATUS1.Size = 8000;输出参数,这解决了我的问题。