gpt4 book ai didi

oracle11g - 如何在oracle中使用dblink调用函数?

转载 作者:行者123 更新时间:2023-12-05 01:20:01 40 4
gpt4 key购买 nike

是否可以在oracle中使用DBLINK调用函数?我正在这样调用函数并收到错误 - ORA-00904:“MC”。“GET_REFTYPES”:标识符无效

select column_value from table(mc.Get_REFTYPES@READ_MAIN_MCNAV(param1, param2, param3)));

函数代码

CREATE OR REPLACE FUNCTION "MC"."Get_REFTYPES"(
param1 IN VARCHAR,
param2 IN NUMBER,
param3 IN DATE DEFAULT SYSDATE
)
RETURN RefType_T PIPELINED IS

CURSOR cur_st (
cur_param1 VARCHAR,
cur_param2 NUMBER,
cur_param3 DATE
) IS
select
TypeID
FROM ......
WHERE......... ;

t_st Types_T; -- Table variable to store return values

BEGIN

OPEN cur_st(param1, param2 , param3 );
FETCH cur_st BULK COLLECT INTO t_st;
CLOSE cur_st;

FOR i IN 1..t_st.COUNT LOOP
PIPE ROW(t_st(i));
END LOOP;
RETURN;
END;

谢谢!

最佳答案

函数声明为 a quoted identifier :

CREATE OR REPLACE FUNCTION "MC"."Get_REFTYPES"(

您将其称为不带引号的,如 mc.Get_REFTYPES@READ_MAIN_MCNAV(...)。引用标识符引起的烦恼之一是你总是必须用引号引用它们并且与原始定义完全相同,所以你需要做:

select column_value
from table(mc."Get_REFTYPES"@READ_MAIN_MCNAV(param1, param2, param3)));

您不需要引用 mc,因为带引号的大写标识符在任何情况下都像不带引号的一样。

但是,即使进行了更正,这也不会如您所愿。正如所讨论的in this answer您不能调用返回用户定义类型的函数,例如 RefType_T,并且会得到“ORA-30626:不支持远程对象类型的函数/过程参数”。

关于oracle11g - 如何在oracle中使用dblink调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875482/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com