sql >> Databasteknik >  >> RDS >> Oracle

hur man loopar acceptera användarinmatning med pl/sql?

Som andra har sagt, PL/SQL ensam är inte lämplig för denna uppgift, du behöver ett användargränssnitt ovanpå för att interagera med slutanvändaren. Men om du har ett verkligt behov av att göra detta i SQL Plus är det möjligt att använda tekniken jag beskrev i denna SO-fråga .

Du måste skapa 2 SQL Plus-skript:

1) Ett skript för att utföra en enkel infogning, här kallad script_insert.sql:

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

2) Ett skript för att styra processen, här kallat 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öra det så här:

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

Låt mig upprepa att detta visar att det kan göras, jag skulle inte hävda att det är ett bra sätt att implementera kravet - såvida det inte bara är ett ad hoc-verktyg som ska användas av en DBA eller utvecklare. Jag skulle aldrig ge en slutanvändare SQL Plus som ett användargränssnitt!



  1. Vad gör Statement.setFetchSize(nSize)-metoden egentligen i SQL Server JDBC-drivrutinen?

  2. PL/SQL-procedur/funktion för att visa data från olika tabeller dynamiskt tillsammans med kolumnnamnen i första dataraden

  3. mysql regexp returnerar booleskt snarare än värde

  4. Hur man säkert infogar kod i mySQL-databasen