Из кода C# я пытаюсь вызвать PACKAGE.PROCEDURE() из Oracle. В этом простом примере я должен получить одно значение из вызова процедуры, но все это я получаю сообщение об ошибке:Как вызвать процедуру Oracle с C#
wrong number or types of arguments in call to 'RETURN_NUM'
Процедура объявляется следующим образом:
PROCEDURE return_num(xNum OUT NUMBER) AS
BEGIN
xNum:= 50;
dbms_output.put_line('hello world ' || xNum);
END;
C# код:
Oraclecon.Open();
OleDbCommand myCMD = new OleDbCommand("TEST.return_num", Oraclecon);
myCMD.CommandType = CommandType.StoredProcedure;
myCMD.Parameters.Add("xNum", OleDbType.Numeric);
OleDbDataReader myReader;
myReader = myCMD.ExecuteReader();
Может кто-нибудь указать, что я делаю неправильно. Тогда в реальном сценарии я хотел бы вызвать процедуру, которая возвращает набор значений из пользовательского типа, такие как:
TYPE r_interface_data IS RECORD
(
object_id VARCHAR2(16),
obj_type VARCHAR2(32)
);
TYPE t_interfase_data IS TABLE OF r_interface_data;
Как я могу подойти к этим. Благодаря!
UPDATE: В моем конкретном случае я закончил вверх делает следующий подход
using (OleDbCommand cmd = new OleDbCommand("PACKAGE.procedure_name"))
{
cmd.CommandType = CommandType.StoredProcedure;
SqlManager sqlManager = new SqlManager();
return sqlManager.GetDataSet(cmd);
}
UPDATE: Поэтому, если я укажу направление параметра OUT (см. Код ниже), тогда мой код компилируется; но я не получаю никаких данных ... 'myCMD.Parameters.Add (" xNum ", OleDbType.Numeric). Направление = ПараметрDirection.Output; ' Любые идеи? –