Вызов хранимой процедуры Oracle с параметром вывода из SQL Server
У меня есть связанный с Oracle сервер в SQL Server 2008 R2.
Мне нужно выполнить хранимые процедуры Oracle (с параметром вывода в первом и входным параметром во второй процедуре):
CREATE OR REPLACE PROCEDURE my1.spGetDate(CurrentDate OUT VARCHAR2)
IS
BEGIN
-- set output parameter, no select statements
END;
CREATE OR REPLACE PROCEDURE my1.spDeleteOldRecords(CurrentDate IN VARCHAR2)
IS
BEGIN
-- conditional delete from oracle table, no select statements
END;
Я не нашел полной документации по этому вопросу, только простые примеры с процедурами select/nonselect без параметров и хочу знать, как вызывать эти процедуры, процедуры с выбором внутри, процедуры с несколькими параметрами с основными типами параметров.
Ответы
Ответ 1
Он должен работать следующим образом:
DECLARE @dateval DATETIME
EXECUTE ('begin my1.spGetDate(?); end;', @dateval OUTPUT) AT ORA_DBLINK_NAME;
EXECUTE ('begin my1.spDeleteOldRecords(?); end;', @dateval) AT ORA_DBLINK_NAME;
Если у вас есть несколько параметров, это может выглядеть так:
EXECUTE ('begin my1.spProc(?,?,?,?); end;', @param_in_1, @param_in_2, @param_out_3 OUTPUT, @param_out_4 OUTPUT) AT DBLINK_NAME;
Ответ 2
Используйте REF CURSOR и объявите этот курсор в качестве выходной переменной в oracle. Используя Ref Cursor вы можете получить набор результатов из Oracle Хранимой процедуры