首页 > 解决方案 > 奇怪的错误。从 SQL Server 调用 Oracle 过程可以正常工作,但不会更新输出参数

问题描述

几个月前我发布了这个问题,但当时没有找到解决方案。解决这个问题对我们来说非常重要!!!!

我从 SQLServer 调用以下 oracle 过程。我已经验证了从 sql server 调用时确实调用并触发了该过程。oracle 过程有一个输出参数。问题是当我从 sqlserver 进行过程调用时,我在输出参数中没有得到值。相反,我得到一个空值(在@outpp 变量中)

create or replace procedure ak_del_proc1(a1 number,
                                         a2 out number) is
begin
  a2 := 111;
end;

Declare @outpp varchar(50)
EXECUTE ('BEGIN ak_del_proc1(?, ?); END;', 9999, @outpp OUTPUT) 
AT MegaOracle;
Select @outpp

提前致谢。安德烈亚斯

标签: oracleserver

解决方案


好几个小时后,问题解决了!!

这是来自 SQLServer 的正确调用:

declare @outpp int=2222;
EXECUTE ('BEGIN ak_del_proc1(?,?); END;', 999, @outpp OUTPUT) AT MegaOracle;
Select @outpp

问题是参数没有初始化。当我们为@outpp 赋值时,一切都按预期工作。

declare @outpp int=2222;

推荐阅读