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