Oracle
 sql >> Baza danych >  >> RDS >> Oracle

jak zapętlić akceptację danych wejściowych użytkownika z pl/sql?

Jak powiedzieli inni, sam PL/SQL nie nadaje się do tego zadania, potrzebujesz interfejsu użytkownika na górze, aby wchodzić w interakcje z użytkownikiem końcowym. Jeśli jednak masz realną potrzebę, aby to zrobić w SQL Plus, jest to możliwe przy użyciu techniki opisanej w to pytanie SO .

Musisz utworzyć 2 skrypty SQL Plus:

1) Skrypt do wykonania pojedynczego wstawienia, tutaj o nazwie script_insert.sql:

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

2) Skrypt kontrolujący proces, tutaj nazwany 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.

Teraz w SQL Plus możesz go uruchomić w następujący sposób:

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

Pozwolę sobie powtórzyć, że to pokazuje, że można to zrobić, nie twierdzę, że jest to dobry sposób na zaimplementowanie wymagania - chyba że jest to tylko narzędzie ad hoc, z którego może korzystać DBA lub programista. Nigdy nie dałbym użytkownikowi końcowemu SQL Plus jako interfejs użytkownika!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zamawiać przez ASC lub DESC bez rozróżniania wielkości liter, z DISTINCT i UNION

  2. Zapytanie w PHP Oracle zapytanie select wewnątrz pętli powolne

  3. Wybierz i zaktualizuj wiersze z datą 00/00/0000 00:00:00 00 w Oracle

  4. Równoważnik kaskadowego ograniczenia Oracle w SQL Server

  5. ORA-01591 - Oracle usuwa dane ze zdalnej tabeli serwera sql