sql >> Databáze >  >> RDS >> Oracle

jak zacyklit přijímání uživatelského vstupu pomocí pl/sql?

Jak již řekli jiní, samotný PL/SQL není pro tento úkol vhodný, pro interakci s koncovým uživatelem potřebujete uživatelské rozhraní. Pokud to však skutečně potřebujete v SQL Plus, je to možné pomocí techniky, kterou jsem popsal v tato SO otázka .

Musíte vytvořit 2 skripty SQL Plus:

1) Skript pro provedení jediného vložení, zde nazvaný script_insert.sql:

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

2) Skript pro řízení procesu, zde nazvaný 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.

Nyní v SQL Plus jej můžete spustit takto:

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

Dovolte mi zopakovat, že to dokazuje, že to lze udělat, netvrdil bych, že je to dobrý způsob, jak implementovat požadavek - pokud to není pouze ad hoc nástroj, který má použít DBA nebo vývojář. Nikdy bych nedal koncovému uživateli SQL Plus jako uživatelské rozhraní!



  1. Dotazujte se pouze na první data z tabulky

  2. těžký dotaz, který mi chcete napsat do mysql?

  3. Jak změnit schéma objektu (tabulka, zobrazení, uložená procedura) v databázi SQL Server - SQL Server / Výukový program TSQL část 28

  4. vyberte, když se poprvé objeví tři jedinečné hodnoty s sql