0
任何机构请帮助我得到下面的代码错误。需要帮助来调试代码
ORA-06550:线20,列33:
PLS-00306:错误数量或类型的在调用参数 '||'
ORA-06550:行20,列12:
PL/SQL:语句被忽略
...条件1:如果我把价值明确我的参数多态光标则没有到达,直到第二个FOR循环。并在打印完成后执行“Inside”语句。 条件2。如果我把变量作为参数,那么它会给出上面提到的错误。
DECLARE
/* First cursor */
CURSOR get_tables IS
SELECT DISTINCT * FROM src_table_list tbl ;
/* Second cursor */
CURSOR get_columns(v_table_name varchar2) IS
SELECT SUBSTR (SYS_CONNECT_BY_PATH (column_name, ','), 2) csv
FROM (SELECT column_name , ROW_NUMBER() OVER (ORDER BY column_name) rn,
COUNT (*) OVER() cnt
FROM USER_TAB_COLUMNS where table_name = v_table_name)
WHERE rn = cnt
-- and col.sn = v_sn
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1;
BEGIN
FOR i IN get_tables LOOP
dbms_output.put_line('Inside ');
FOR j IN get_columns(i.table_name) LOOP
dbms_output.put_line('SELECT '|| j ||'FROM'||i.table_name||' ;');
dbms_output.put_line(' ');
END LOOP;
END LOOP;
END;
/
可能是第二个查询是错误的。你有没有尝试过,传递一个固定的表名?没有语法错误了,但我无法确定你想要它返回什么。在我的答案的最后一行查看问题+建议。 – GolezTrol
症状很明显,所以请仔细阅读:*行不会被忽略,但第二个游标不会返回任何行*只要将它写入查询中,这使得测试和调试更容易。之后,您可以将其放回到此过程中。 – GolezTrol