從SQL Server使用輸出參數調用Oracle存儲過程(Calling Oracle stored procedure with output parameter from SQL Server)
我在SQL Server 2008 R2中有一個Oracle連結伺服器. 我需要執行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)
-- conditional delete from oracle table, no select statements
我沒有找到有關此問題的完整文檔,隻有帶有無參數選擇/非選擇過程的簡單示例,并且想知道如何調用這些過程,具有内部select的過程以及具有基本參數類型的多參數過程.
>
解決方案
它應該像這樣工作:
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;
出錯提示:
消息 7411,級别 16,狀态 1,第1行
未将伺服器 'ORA_DBLINK_NAME' 配置為用于 RPC。
解決方式:
exec sp_serveroption @server='ORA_DBLINK_NAME' , @optname= 'rpc', @optvalue ='TRUE'
exec sp_serveroption @server='ORA_DBLINK_NAME' , @optname= 'rpc out', @optvalue='TRUE'
來源:網絡
優質生活從拆開始