在SQL Server通过DBLINK执行ORACLE存储过程

从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)
IS
BEGIN
-- conditional delete from oracle table, no select statements
END;

我没有找到有关此问题的完整文档,只有带有无参数选择/非选择过程的简单示例,并且想知道如何调用这些过程,具有内部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'

来源:网络

 

posted @   samrv  阅读(1001)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示