我有两个程序,
-- Procedure 1 on another server (db link)
PROCEDURE GET_TRANSACTIONS
(
I_FROM_DT VARCHAR2,
I_TO_DT VARCHAR2,
I_ACC_NO number,
I_ACC_SUB_NO number,
I_CURR_NO number,
O_DATACUR OUT SYS_REFCURSOR
) AS
BEGIN
open O_DATACUR for select * from xtable where ...(where cluase) ...;
END;
-- Procedure 2
PROCEDURE GET_TRANSACTIONS
(
I_FROM_DT VARCHAR2,
I_TO_DT VARCHAR2,
I_ACC_NO number,
I_ACC_SUB_NO number,
I_CURR_NO number,
O_DATACUR OUT SYS_REFCURSOR
) AS
BEGIN
XPKG.GET_TRANSACTIONS@XDBLINK_DB
(
I_FROM_DT, I_TO_DT, I_ACC_NO, I_ACC_SUB_NO,I_CURR_NO, O_DATACUR
);
END;
现在在PHP中,我将调用GET_TRANSACTIONS(过程2)。。我正在尝试从DataRec获取数据,但另一方面没有返回数据。。如果我直接调用GET_TRANSACTIONS(过程2)。。。它将返回数据。。
有什么解决方案吗?注意,我正在开发Oracle 11g
问候
你好,我试图在不使用DB LINK的情况下重新生成相同的场景,并且我能够看到Proc 2返回数据。使用DBLink获取数据的表中的数据可能存在一些问题。希望下面的片段能帮助你。
CREATE OR REPLACE PROCEDURE GET_TRANSACTIONS(
I_FROM_DT VARCHAR2,
I_TO_DT VARCHAR2,
I_ACC_NO NUMBER,
I_ACC_SUB_NO NUMBER,
I_CURR_NO NUMBER,
O_DATACUR OUT SYS_REFCURSOR )
AS
BEGIN
OPEN O_DATACUR FOR SELECT LEVEL FROM DUAL CONNECT BY LEVEL < 5;
END;
CREATE OR REPLACE PROCEDURE GET_TRANSACTIONS_1(
I_FROM_DT VARCHAR2,
I_TO_DT VARCHAR2,
I_ACC_NO NUMBER,
I_ACC_SUB_NO NUMBER,
I_CURR_NO NUMBER,
O_DATACUR OUT SYS_REFCURSOR )
AS
BEGIN
GET_TRANSACTIONS ( I_FROM_DT, I_TO_DT, I_ACC_NO, I_ACC_SUB_NO,I_CURR_NO, O_DATACUR );
END;
--Check the output----------
var o_cur refcursor;
EXEC GET_TRANSACTIONS_1('1','1',1,1,1,:o_cur);
PRINT O_CUR;
LEVEL
---------------------------------------
1
2
3
4