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

Jak w Oracle 10g akceptować dane wprowadzane przez użytkownika w pętli?

Jest to zmienna zastępująca — funkcja sql*plus — i nie działa w ten sposób. Musisz zadzwonić undefine &slno lub accept slno ... aby pobierał inne dane wejściowe, ale są to również sqlplus, a nie polecenia pl/sql, więc nie będzie można ich wywołać w pętli,

Prawdopodobnie jedyne, co możesz tutaj zrobić, to

INSERT INTO TEST_TABLE VALUES('&slno1',SYSDATE);
INSERT INTO TEST_TABLE VALUES('&slno2',SYSDATE);
INSERT INTO TEST_TABLE VALUES('&slno3',SYSDATE);
INSERT INTO TEST_TABLE VALUES('&slno4',SYSDATE);
INSERT INTO TEST_TABLE VALUES('&slno5',SYSDATE);

aktualizacja :Na szczęście można to obejść, generując listę oddzielnych instrukcji sekwencyjnych akceptujących niezależne dane wejściowe:

22:38:59 @> conn system/[email protected]_sandbox
Connected.
22:39:01 [email protected]_sandbox> @s:\test
Enter value for var1: a
Enter value for var2: b
Enter value for var3: c
22:39:06 [email protected]_sandbox> commit;
22:39:11 [email protected]_sandbox> select * from test_table;

COL1       COL2
---------- -------------------
a          07.12.2012 22:39:10
b          07.12.2012 22:39:11
c          07.12.2012 22:39:11
22:39:17 [email protected]_sandbox> get s:\test
  1  set echo off
  2  set define off
  3  set termout off
  4  set feedback off
  5  set timing off
  6  spool s:\123.sql
  7  begin
  8    for i in 1 .. 3 loop
  9      dbms_output.put_line('insert into test_table values(''&var'||i||''', sysdate);');
 10    end loop;
 11  end;
 12  /
 13  spool off
 14  set define "&"
 15  set termout on
 16* @s:\123.sql
22:39:24  17  .
22:39:58 [email protected]_sandbox> get s:\123.sql
  1  insert into test_table values('&var1', sysdate);
  2  insert into test_table values('&var2', sysdate);
  3* insert into test_table values('&var3', sysdate);
22:40:04 [email protected]_sandbox>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabela zapytań z innej bazy danych ORACLE

  2. Oracle:zapytanie SQL, aby znaleźć wszystkie wyzwalacze należące do tabel?

  3. cx_Oracle.DatabaseError:ORA-12514:TNS:listener nie wie obecnie o żądanej usłudze w deskryptorze połączenia

  4. Aktualizuj tylko datę w polu datetime w Pl/SQL

  5. Uporządkuj wiersze przy użyciu kolumn od mniejszej liczby wartości null do braku wartości null