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

本文关键字:Oracle 存储过程 输出 参数 调用 用户 定义 | 更新日期: 2023-09-27 18:07:02

我正在使用下面的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();

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

我将命令对象名称更改为cmd1,因为我使用cmd用于以前的命令,我还添加了参数大小PAR_STATUS1。尺寸= 8000;对于输出参数,这解决了我的问题