Я создал хранимую процедуру в Oracle 12c, и для устранения проблемы я сократил ее до простого возврата 2 выходных значений.Я попытался запустить хранимую процедуру в SQL Developer, и она возвращает ожидаемые значения.Однако, когда я вызываю его из своего кода C #, я получаю следующую ошибку в Visual Studio 2015:
ORA-06502: PL / SQL: ошибка числа или значения: слишком маленький буфер строки символов
ORA-06512: в \ " MY_PROCEDURE ", строка 32
ORA-06512: в строке 1
Это мой код C #:
Oracle.DataAccess.Client.OracleConnection oraconn = new Oracle.DataAccess.Client.OracleConnection("My Connection String");
Oracle.DataAccess.Client.OracleCommand oraComm = new Oracle.DataAccess.Client.OracleCommand("MY_PROCEDURE", oraconn);
oraComm.Parameters.Add("P_REGISTRATION_ID", Oracle.DataAccess.Client.OracleDbType.Int32, ParameterDirection.Input);
oraComm.Parameters.Add("P_OFFICE_ID", Oracle.DataAccess.Client.OracleDbType.Int32, ParameterDirection.Input);
oraComm.Parameters.Add("P_SERIES_ID", Oracle.DataAccess.Client.OracleDbType.Int32, ParameterDirection.Input);
oraComm.Parameters.Add("P_USER_UPDATING", Oracle.DataAccess.Client.OracleDbType.Varchar2, ParameterDirection.Input);
oraComm.Parameters.Add("P_CODE", Oracle.DataAccess.Client.OracleDbType.Varchar2, ParameterDirection.Output);
oraComm.Parameters.Add("P_NUM", Oracle.DataAccess.Client.OracleDbType.Int32, ParameterDirection.Output);
oraComm.CommandType = CommandType.StoredProcedure;
oraconn.Open();
oraComm.ExecuteNonQuery();
var ticketCode = oraComm.Parameters["P_CODE"].ToString();
var ticketNum = oraComm.Parameters["P_NUM"].ToString();
Вот хранимая процедура - я сократил ее, чтобы просто предоставить значения для выходных параметров, и я все еще получаю ту же ошибку даже с этим:
PROCEDURE MY_PROCEDURE(
P_REGISTRATION_ID IN NUMBER,
P_OFFICE_ID IN NUMBER,
P_SERIES_ID IN NUMBER,
P_USER_UPDATING IN VARCHAR2,
P_CODE OUT VARCHAR2,
P_NUM OUT NUMBER)
AS
BEGIN
P_CODE := 'AA';
P_NUM := 1;
END INS_REGISTRATION_QS_PR;
Любая помощьочень ценится.Я чувствую, что мне просто не хватает чего-то маленького, чтобы это исправить.