我试图用几个小时来找出如何从oracle存储过程中获取布尔值的返回值。
我创建了一个简单的SP,该SP返回一个布尔值,但是当我将参数传递为OracleDbType.Boolean时,出现错误。
这是我的sp
create or replace procedure nbq_out_test (pi_bool_in IN BOOLEAN,
pi_var_in IN VARCHAR2,
pi_num_in IN NUMBER,
po_bool_out OUT BOOLEAN,
po_var_out OUT VARCHAR2,
po_num_out OUT NUMBER) AS
BEGIN
po_bool_out := pi_bool_in ;
po_var_out := pi_var_in;
po_num_out := pi_num_in;
END nbq_out_test;
这是我的C#代码
OracleCommand command = new OracleCommand("NBQ_OUT_TEST", con);
OracleParameter param;
command.BindByName = false;
command.CommandType = CommandType.StoredProcedure;
param = new OracleParameter("PI_BOOL_IN", OracleDbType.Boolean, ParameterDirection.Input); //Works fine as input
param.Value = true;
command.Parameters.Add(param);
param = new OracleParameter("PO_BOOL_OUT",OracleDbType.Boolean,ParameterDirection.Output); //This is the line causing error.
command.Parameters.Add(param);
command.ExecuteNonQuery();
这是错误
ORA-06502: PL/SQL: numeric or value error\nORA-06512: at line 1
我无法修改存储过程以返回1
或0
或类似的东西。
oracle版本为12.1.0.2.0
Oracle.ManagedDataAccess.18.3.0
我进行了很多搜索,但大多数建议是修改SP,但这种建议还没结束。
任何建议都会有很大帮助。