2017-10-31 2 views
0

defineコマンドを使用しようとしているときにエラーが発生しています。そうでなければ、コードは正常に動作します。defineコマンドを使用して、 。定義するb_table = '&テーブル名を入力してください';カラムの名前と共にテーブルから空のカラムを見つけることができないようにする

    declare 
        v_count number; 
        cursor c2 is select Column_name 
        from all_tab_columns 
        where table_name= '&b_table'; 

        begin 
        for r1 in c2 loop 
        dbms_output.put_line(r1.column_name); 
        select count(r1.column_name) into v_count 
        from HR.'&b_table'; 
        if v_count =0 then 
        dbms_output.put_line(v_count); 
        end if; 
        end loop; 
        end; 
       old 5: where table_name= '&b_table'; 
new 5: where table_name= ' enter the table name'; 
old 11: from HR.'&b_table'; 
new 11: from HR.' enter the table name'; 
from HR.' enter the table name'; 
     * 
ERROR at line 11: 
ORA-06550: line 11, column 9: 
PL/SQL: ORA-00903: invalid table name 
ORA-06550: line 10, column 1: 
PL/SQL: SQL Statement ignored 
+0

最初の行を試してみてください。 定義するb_table = '&テーブル名を入力してください'; –

+0

編集を使って上記の行を入力し、コード – dube

+0

の書式を少し書いてください。 – NoobEditor

答えて

1

は、私はそれがserveroutputを設定逃したこの

SET serveroutput ON; 
    DECLARE 
     v_count  NUMBER; 
     v_table_name VARCHAR2(200); 
     CURSOR c2(v_table VARCHAR2) 
     IS 
     SELECT Column_name FROM all_tab_columns WHERE table_name= v_table; 
    BEGIN 
     v_table_name := :table_name; 
     FOR r1 IN c2(v_table_name) 
     LOOP 
     dbms_output.put_line(r1.column_name); 
     EXECUTE immediate('SELECT COUNT('||r1.column_name||') FROM HR'||'.'||v_table_name) INTO v_count; 
     IF v_count =0 THEN 
      dbms_output.put_line(v_count); 
     END IF; 
     END LOOP; 
    END; 
+0

bind_variable "table_name"が宣言されていないと言って動作していません。 –

+0

@Optimuskck - EXECUTE IMMEDIATE 'v_countにいくつかの動的クエリ'を実行しました。これは、単一の結果に対する正しい構文です。 – g00dy

+0

IDEのバインド変数にはプロンプトが表示されていません。定数として宣言するか、プロンプトに変更して 'v_table_name:=&b_table'とする必要があります。 –

関連する問題