sql >> Database >  >> RDS >> Oracle

hoe lus accepteren van gebruikersinvoer met pl/sql?

Zoals anderen al hebben gezegd, is PL/SQL alleen niet geschikt voor deze taak, je hebt een UI nodig om met de eindgebruiker te communiceren. Als u dit echter echt in SQL Plus moet doen, is het mogelijk met behulp van de techniek die ik heb beschreven in deze SO-vraag .

U moet 2 SQL Plus-scripts maken:

1) Een script om een ​​enkele insertie uit te voeren, hier genaamd script_insert.sql:

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

2) Een script om het proces te besturen, hier main.sql genoemd:

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.

Nu in SQL Plus kun je het als volgt uitvoeren:

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

Laat me herhalen dat dit aantoont dat het kan, ik zou niet beweren dat het een goede manier is om de vereiste te implementeren - tenzij het slechts een ad-hoctool is die door een DBA of ontwikkelaar moet worden gebruikt. Ik zou nooit een eindgebruiker . geven SQL Plus als gebruikersinterface!



  1. Waarom postgresql geen index gebruikt in deze query

  2. Tabelgrootte met pagina-indeling

  3. Dynamische SQL (EXECUTE) als voorwaarde voor IF-statement

  4. Records ophalen uit een specifieke kolom in oracle