У меня другая проблема с C # и Oracle DB.Поэтому я выполняю хранимую процедуру и возвращаю параметр out, все работает нормально, но в конце мои выходные данные передаются наполовину.
create or replace PROCEDURE TEST(MyVar IN VARCHAR2, return_var OUT VARCHAR2) AS
BEGIN
DECLARE newId number;
BEGIN
SELECT (NVL(MAX(ID),0) + 1)
INTO newId
FROM MY_TABLE;
INSERT INTO MY_TABLE
VALUES (newId, sysdate, 'BEL', '3' , MyVar, 'var2', 'AZ', 'TR', 'FG', 'QW', 'XC', 'IO', '1', '0', sysdate, 'TT', 'BB', 'OO', '8', '9', sysdate, '5', '6');
END;
return_var := 'TESTRETURN';
END TEST;
Вот код C #:
OracleParameter out_param = oCommand.CreateParameter();
out_param.ParameterName = "return_code";
out_param.Direction = ParameterDirection.Output;
out_param.DbType = DbType.String;
out_param.Size = 300;
oCommand.Parameters.Add(out_param);
oCommand.ExecuteNonQuery();
Results = out_param.Value.ToString();
И я получаю это: TESTR вместо TESTRETURN
Если я заменю в процедуре Oracle TESTRETURN чем-то большим, например "THISCHAINHAVE20CARSX", я получил "THISCHAINH"
И если я заменю всего двумя буквами, у меня будет только одна ..