Я хочу выполнить хранимую процедуру, вот она:
CREATE OR REPLACE PROCEDURE TESTPROC(var1 IN VARCHAR2, var2 IN VARCHAR2, return_code OUT VARCHAR2, return_code2 OUT VARCHAR2)
AS BEGIN
DECLARE newId number;
begin
SELECT (NVL(MAX(ID),0) + 1) into newId from CC_INT_CODA;
INSERT INTO CC_INT_CODA
VALUES (newId, sysdate, 'BEL', '3' , var1, var2, 'AZ', 'TR', 'FG', 'QW', 'XC', 'IO', '1', '0', sysdate, 'TT', 'BB', 'OO', '8', '9', sysdate, '5', '6');
end;
return_code := 'Returntest1';
return_code2 := 'Returntest2';
END TESTPROC;
Что я хочу сделать в C #, это выполнить эту процедуру с моими IN-параметрами и вернуть два OUT-параметра в строках.
Я могу запустить его только с аргументами IN, но невозможно получить 2 аргумента OUT.
Я новичок в Oracle и C #, поэтому будьте осторожны.И извините за мой английский.
PS: я использую устаревшую сборку System.Data.OracleClient.dll, а не отдельную Oracle.
РЕДАКТИРОВАТЬ С РЕШЕНИЕМ:
Спасибо всем за ваши комментарии и ответ, наконец-то все заработало (см. Ниже).
Results = "";
OracleCommand oCommand = new OracleCommand();
oCommand.Connection = oraConnection;
oCommand.CommandText = SQL;
oCommand.CommandType = CommandType.StoredProcedure;
OracleParameter return_param = oCommand.CreateParameter();
return_param.ParameterName = "return_code";
return_param.Direction = ParameterDirection.Output;
return_param.DbType = DbType.String;
return_param.Size = 30;
oCommand.Parameters.Add(return_param);
oCommand.ExecuteReader();
Results = return_param.Value.ToString();
oraConnection.Close();