plsql コードに問題があり、ほとんどすべてを試しています。今、私は自分の問題を解決するための心と力を失っています:)
すべてのテーブル スキーマで変数 v_ss に割り当てられた特定の文字列を検索し、それを DBMS_OUTPUT に出力したい場合があります。そのような場合の既製のソリューションがあることは知っていますが、自分でコーディングしたかったのです。以下のコードでは、v_stmt に「テーブルが存在しません」というエラーが表示されます。この select は rec.column_name を認識しないと思いますが、なぜですか?
これが私のコードです:
DECLARE
v_stmt VARCHAR2(1000);
v_ss VARCHAR2(30) := 'Argentina';
v_own ALL_TAB_COLUMNS.OWNER%TYPE;
v_tab_nam ALL_TAB_COLUMNS.TABLE_NAME%TYPE;
v_col_nam ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
CURSOR cur_asc IS
SELECT t.owner, t.table_name, t.column_name
FROM SYS.ALL_TAB_COLUMNS t
WHERE t.OWNER LIKE 'HR'
AND t.DATA_TYPE LIKE 'VARCHAR2';
BEGIN
FOR rec IN cur_asc LOOP
v_stmt := 'SELECT rec.owner, rec.table_name, rec.column_name FROM rec.table_name WHERE rec.column_name LIKE :1';
EXECUTE IMMEDIATE v_stmt INTO v_own, v_tab_nam, v_col_nam USING v_ss;
DBMS_OUTPUT.put_line(v_own || ':' || v_tab_nam || ':' || v_col_nam);
END LOOP;
END;
/
Error report -
ORA-00942: table or view does not exist
ORA-06512: at line 19
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
バグの説明と修正方法を教えてください。前もって感謝します