Невозможно получить логическое значение из хранимой процедуры Oracle - PullRequest
0 голосов
/ 30 января 2019

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

Любое предложение будет большой помощью.

1 Ответ

0 голосов
/ 30 января 2019

OracleDbType, похоже, не поддерживает логическое значение.

Я думаю, что на ваш вопрос уже есть ответ на следующей странице. Логическое значение в OracleDbType

...