我有2个程序,
-- 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
此致
答案 0 :(得分:0)
您好我试图在不使用DB LINK的情况下重新生成相同的场景,我可以看到Proc 2返回数据。使用DB Link获取数据的表中的数据可能存在一些问题。希望下面的片段可以帮助你。
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