Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment boucler en acceptant l'entrée utilisateur avec pl/sql?

Comme d'autres l'ont dit, PL/SQL seul ne convient pas à cette tâche, vous avez besoin d'une interface utilisateur en plus pour interagir avec l'utilisateur final. Cependant, si vous avez un réel besoin de le faire dans SQL Plus, c'est possible en utilisant la technique que j'ai décrite dans cette question SO .

Vous devez créer 2 scripts SQL Plus :

1) Un script pour effectuer une seule insertion, ici appelé script_insert.sql :

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

2) Un script pour contrôler le processus, ici appelé 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.

Maintenant, dans SQL Plus, vous pouvez l'exécuter comme ceci :

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

Permettez-moi de répéter que cela démontre que cela peut être fait, je ne prétendrais pas que ce soit un bon moyen de mettre en œuvre l'exigence - à moins qu'il ne s'agisse simplement d'un outil ad hoc à utiliser par un DBA ou un développeur. Je ne donnerais jamais à un utilisateur final SQL Plus comme interface utilisateur !