我是oracle新技術,請幫幫我ORA-30626:不支持遠程對象類型的函數/過程參數
我找不到答案。我的任務是通過通過dblink傳遞參數來運行兩個函數。我有兩個相同的功能在db1和db2位於兩個不同的虛擬機在hyper v,我設法創建它們之間的dblink,但是當我查詢下面的命令它顯示上述錯誤消息。
SELECT /*+ parallel(4) */ *
FROM TABLE(my_fun(CURSOR(SELECT PDBID, STRUCTURE FROM PROTEINS
WHERE PDBID= '1n6h'),
CURSOR(SELECT PDBID, STRUCTURE FROM PROTEINS WHERE PDBID BETWEEN
'1n6h' AND '1n6h'), PRINT => 0, ALGORITHM_TYPE=>2, CHAIN2=>'A'))
UNION ALL
SELECT /*+ parallel(4) */ *
FROM TABLE([email protected]_link2(CURSOR(SELECT PDBID, STRUCTURE FROM
PROTEINS WHERE PDBID= '1n6h'),
CURSOR(SELECT PDBID, STRUCTURE FROM PROTEINS WHERE PDBID BETWEEN
'1n6n' AND '1n6n'), PRINT => 0, ALGORITHM_TYPE=>2, CHAIN2=>'A'));
這是我在這兩個DB1和DB2創建的,我試圖創建在兩個數據庫中的一個包裝函數,但我仍然無法通過DBLINK獲取數據。
CREATE OR REPLACE
type my_record force is object (
QPDBID varchar2(8),
DBPDBID varchar2(8));
/
CREATE OR REPLACE TYPE MY_TYPE AS TABLE OF
my_record
/
CREATE OR REPLACE FUNCTION myfun_rem(qpdb in varchar2,dbpdbid1 in varchar2)
RETURN MY_TYPE
AS
v_my_tst MY_TYPE;
BEGIN
SELECT MY_RECORD(QPDBID ,DBPDBID)
BULK COLLECT INTO v_my_tst
FROM
(SELECT QPDBID, DBPDBID FROM TABLE(my_fun(CURSOR(SELECT PDBID,
STRUCTURE FROM PROTEINS WHERE PDBID= QPDBID),
CURSOR(SELECT PDBID, STRUCTURE FROM PROTEINS WHERE PDBID BETWEEN
QPDBID AND QPDBID), PRINT => 0, ALGORITHM_TYPE=>2, CHAIN2=>'A')));
RETURN v_my_tst;
EXCEPTION
WHEN OTHERS THEN
v_my_tst.DELETE;
RETURN v_my_tst;
END;
/
SELECT * FROM TABLE(myfun_rem(param1,param2)); --this works locally but not remotely (select * from table([email protected]_link(param1,param2))
SELECT * FROM TABLE(myfun_loc(param1,param2))
union all
SELECT * FROM TABLE([email protected]_link(param1,param2,parm3));
--not工作相同的錯誤消息如上
我試圖創建視圖在遠程DB2但沒有數據被顯示作爲我的功能需要傳遞,這是不可能通過參數在參數視圖。
PS對不起我的英語不好
的[調用存儲功能在Oracle在數據庫中鏈接(即返回一個用戶定義類型的數組)](可能的複製https://stackoverflow.com/questions/7245995 /調用一個存儲函數返回一個用戶定義類型的orac) – XING
嗨,你有沒有檢查我的**編輯**的答案? – hmmftg
是的,我沒有檢查你編輯的答案,我試圖用你的例子在我的問題,即使艱難,我仍然不成功。 –