sql >> データベース >  >> RDS >> Oracle

pl / sqlでユーザー入力の受け入れをループする方法は?

    他の人が言っているように、PL / SQLだけではこのタスクには適していません。エンド・ユーザーと対話するには、上部にUIが必要です。ただし、SQL Plusでこれを行う必要がある場合は、このSOの質問

    2つのSQLPlusスクリプトを作成する必要があります:

    1)ここではscript_insert.sqlと呼ばれる単一の挿入を実行するスクリプト:

    insert into t1 values ('&1.');
    @main
    

    2)ここではmain.sqlと呼ばれるプロセスを制御するスクリプト:

    accept selection prompt "Please enter value, enter 'done' when no more values: "
    
    set term off verify off
    
    column script new_value v_script
    
    select case '&selection.'
           when 'done' then ''
           else '@script_insert &selection.'
           end as script
    from dual;
    
    set term on
    
    @&v_script.
    

    SQL Plusでは、次のように実行できます。

    SQL> select * from t1;
    
    no rows selected
    
    SQL> @main
    Please enter value, enter 'done' when no more values: 1
    Please enter value, enter 'done' when no more values: 2
    Please enter value, enter 'done' when no more values: 3
    Please enter value, enter 'done' when no more values: done
    SQL> select * from t1;
    
            N1
    ----------
             1
             2
             3
    

    これはそれが可能であることを示していることを繰り返しますが、DBAまたは開発者が使用するアドホックツールでない限り、要件を実装するための良い方法であるとは言いません。 エンドユーザーを提供することは決してありません UIとしてのSQLPlus!



    1. 1つのテーブルと多対多のテーブルへの複数のINSERT

    2. Slick 3.0の一括挿入または更新(アップサート)

    3. MySQLワークベンチ5.2.40でテーブルを作成できません

    4. 新しいRailsプロジェクトでSQLiteからPostgreSQLに変更する