来自 MSSQL > ORACLE 的链接服务器存储过程调用

Linked Server Stored Procedure call from MSSQL > ORACLE

我正在尝试从 MSSQL 向 ORACLE 发出 SP 调用,它们都在链接服务器环境中成功设置,我遇到的唯一问题是创建 SQL SP 调用甲骨文;

下面是我试图在 SQL 中作为 SP 调用重现的过程;

SET TIMING ON
SET SERVEROUTPUT ON
DECLARE 
  AVEMAIL VARCHAR2(255);
  ANCDPXID NUMBER;
  AVCDPURN VARCHAR2(12);

BEGIN 
  AVEMAIL := 'a@b.com';
  ANCDPXID := NULL;
  AVCDPURN := NULL;

  STP_FAC_PERSON ( AVEMAIL, ANCDPXID, AVCDPURN );

  DBMS_OUTPUT.Put_Line('ANCDPXID = ' || TO_CHAR(ANCDPXID));
  DBMS_OUTPUT.Put_Line('AVCDPURN = ' || AVCDPURN);

END;

我已经尝试了很多次下面的例子,但都没有用;

SELECT * FROM OPENQUERY(FACUAT, '{Call FACUAT.CDBWEB.TACOMCDB.STP_FAC_PERSON( ''test@test.com'','''',''''}' )

EXEC ('CALL TACOMCDB.STP_FAC_PERSON(''test@test.com'','''','''')') at FACUAT

EXEC FACUAT.CDBWEB.TACOMCDB.STP_FAC_PERSON

请指教 非常感谢!

如果我没记错的话,OPENQUERY 在用于调用 Oracle 存储过程时将不起作用。 请尝试 -

DECLARE @param_in_1 VARCHAR(255);
DECLARE @param_out_1 INT;
DECLARE @param_out_2 VARCHAR(12);
SET @param_in_1 = 'test@test.com';
EXECUTE ('BEGIN TACOMCDB.STP_FAC_PERSON(?,?,?); END;', @param_in_1,@param_out_1 OUTPUT, @param_out_2 OUTPUT) AT FACUAT;
SELECT @param_out_1,@param_out_2;

只是为了更新,下面是工作查询,另外我重新安装了 32 位 Oracle 驱动程序;

EXECUTE('Call STP_CAF_PERSON(?,?,?)', @AVEMAIL OUTPUT, @ANCDPXID OUTPUT, @AVCDPURN OUTPUT) AT [CAFUAT]