我将函数参数传递给游标时出错 . 这是下面的例子
创建或替换FUNCTION UPD_TAB(OUT VARCHAR2中的ID_VAL,OUT VARCHAR2中的SRC_COLUMN,OUT VARCHAR2中的DEST_COLUMN,OUT VARCHAR2中的OWNER_TAB,OUT VARCHAR2中的SRC_TAB,OUT VARCHAR2中的DEST_TAB)
RETURN VARCHAR2
IS
SRC_COL VARCHAR2(30):= SRC_COLUMN;
DEST_COL VARCHAR2(20):= DEST_COLUMN;
ID_VALUE VARCHAR2(20):= ID_VAL;
SRC_TABLE VARCHAR(20):= SRC_TAB;
DEST_TABLE VARCHAR(20):= DEST_TAB;
TAB1 VARCHAR2(40):= OWNER_TAB || '.' || SRC_TAB;
TAB2 VARCHAR2(40):= OWNER_TAB || '.' || DEST_TAB;
CURSOR RET_VAL
IS
SELECT C1.SRC_COL,C2.DEST_COL
来自 TAB1 C1,TAB2 C2
在哪里C1.SRC_COL = C2.DEST_COL
AND C1.ID = ID_VALUE;
这里在上面的例子中传递实际的数据库值Schemaname.Tablename例如 . 格兰尼 . 开玩笑 . 它输出结果但是当我传递具有值TAB1和TAB2的变量时 . 它显示以下错误
PL / SQL:ORA-00942:表或视图不存在
22/11 PL / SQL:语句被忽略
我搜索了很多,但没有找到解决方案,我知道什么错误试图说,但我不知道如何解决这个问题的解决方案 .
任何帮助将不胜感激 . 提前致谢 .
1 回答
静态游标无法从变量中获取表名和列名 . 解决此问题的一种方法是在VARCHAR2变量中构建查询,然后打开查询字符串的通用游标(SYS_REFCURSOR类型,在包SYS.STANDARD中定义):
分享和享受 .