sql >> Database teknologi >  >> RDS >> Oracle

hvordan man looper acceptere brugerinput med pl/sql?

Som andre har sagt, er PL/SQL alene ikke egnet til denne opgave, du har brug for en brugergrænseflade på toppen for at interagere med slutbrugeren. Men hvis du har et reelt behov for at gøre dette i SQL Plus, er det muligt at bruge den teknik, jeg beskrev i dette SO-spørgsmål .

Du skal oprette 2 SQL Plus-scripts:

1) Et script til at udføre en enkelt insert, her kaldet script_insert.sql:

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

2) Et script til at styre processen, her kaldet 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.

Nu i SQL Plus kan du køre det sådan her:

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

Lad mig gentage, at dette viser, at det kan lade sig gøre, jeg vil ikke påstå, at det er en god måde at implementere kravet på - medmindre det blot er et ad hoc-værktøj, der skal bruges af en DBA eller udvikler. Jeg ville aldrig give en slutbruger SQL Plus som brugergrænseflade!



  1. Hvad svarer til en DO-blok for Postgres <9.0

  2. Opsæt aspnetcore med MySQL-database i docker

  3. Studerer MySQL, SQLite-kildekode for at lære om RDBMS-implementering

  4. Transaktioner virker ikke for min MySQL DB