zoukankan      html  css  js  c++  java
  • 在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'

    来源:网络

    优质生活从拆开始
  • 相关阅读:
    NOIP模拟 1
    wlan
    IS-IS IGP
    linux 基础 软件的安装 *****
    第五部分 linux 软件安装RPM SRPM与YUM
    第四部分 linux使用者管理
    添加rpmforge源 centos 7
    x86 保护模式 十 分页管理机制
    X86保护模式 八操作系统类指令
    poj2230 Watchcow【欧拉回路】【输出路径】(遍历所有边的两个方向)
  • 原文地址:https://www.cnblogs.com/samrv/p/15210852.html
Copyright © 2011-2022 走看看