Я пытаюсь по часам выяснить, как я могу получить возвращенное значение как логическое значение из хранимой процедуры Oracle.
Я создал простой 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, который не в моем конце.
Любое предложение будет большой помощью.