Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Trong oracle 10g, làm cách nào để chấp nhận đầu vào của người dùng trong một vòng lặp?

Nó là một biến thay thế - một tính năng sql * plus - và nó không hoạt động theo cách này. Bạn phải gọi undefine &slno hoặc accept slno ... để làm cho nó nhận một đầu vào khác, nhưng đây cũng là các lệnh sqlplus, không phải pl / sql, vì vậy bạn sẽ không thể gọi chúng trong một vòng lặp,

Có lẽ điều duy nhất bạn có thể làm ở đây là

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);

cập nhật :May mắn thay, bạn có thể giải quyết vấn đề này bằng cách tạo danh sách các câu lệnh tuần tự riêng biệt chấp nhận các đầu vào độc lập:

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. Các thực thể cơ sở dữ liệu tùy chọn

  2. Sử dụng NẾU TỒN TẠI (CHỌN ...) trong trình kích hoạt CHÈN TRƯỚC (Oracle)

  3. CHÈN ORACLE TRIGGER VÀO ... (CHỌN * ...)

  4. Giải pháp cho ORA-00997:sử dụng bất hợp pháp kiểu dữ liệu LONG

  5. chuỗi trống trong oracle