【发布时间】:2023-04-05 17:14:01
【问题描述】:
我们有一个要求,我们必须在运行时将表名传递给 pl/SQL 对象。
下面是例子
create or replace FUNCTION ABC
(P_TABLE VARCHAR2) RETURN NUMBER IS
C_REFERENCE SYS_REFCURSOR;
V_TABLE VARCHAR2(50):=P_TABLE;
V_C_REF v_table%rowtype;
BEGIN
OPEN C_REFERENCE FOR 'SELECT * FROM '||V_TABLE||;
LOOP
FETCH C_REFERENCE INTO V_C_REF;
EXIT WHEN C_REFERENCE%NOTFOUND;
/*some processing*/
END LOOP;
return(1);
END;
上面的代码会给我一个错误。有什么解决方法吗?表名可以不同,不同的表会有不同的结构。
【问题讨论】:
-
使用明确的
cursor代替sys_refcursor。阅读此stackoverflow.com/questions/50581147/…