如何在SQL Server中捕获Oracle SP INOUT参数

时间:2016-02-12 09:42:19

标签: sql-server oracle tsql stored-procedures linked-server

我的SQL Server中有Oracle链接服务器。我创建了在Oracle中执行存储过程的过程:

CREATE PROCEDURE ModifySth (
    @var1 nvarchar(255),
    @var2 nvarchar(255)
)
AS
BEGIN
    DECLARE @var3 as NVARCHAR(255);
    EXEC('begin oracleSPname(?, ?, ? ); end;',
            @var1 output,        
            @var2,
            @var3 output,
        )
    at ORACLE
    SELECT @var1 as var1, @Vvar3 as var3;
END

当我执行ModifySth时,我传递了两个参数,除了两个输出变量。 var1IN OUT。如何捕获var1?当我尝试捕获时,我得到的值是我传递给存储过程的,而不是输出值。

1 个答案:

答案 0 :(得分:1)

为什么不使用额外的变量?

DECLARE @var1_reply as NVARCHAR(255);

EXEC('begin oracleSPname(?, ?, ?, ? ); end;',
        @var1,        
        @var1_reply output,
        @var2,
        @var3 output,
    )
at ORACLE

set @var1= @var1_reply;