यह एक प्रतिस्थापन चर है - एक एसक्यूएल * प्लस फीचर - और यह इस तरह से काम नहीं करता है। आपको कॉल करना होगा undefine &slno
या accept slno ...
इसे एक और इनपुट लेने के लिए, लेकिन ये भी एसक्लप्लस हैं, पीएल/एसक्यूएल कमांड नहीं, इसलिए आप उन्हें लूप में नहीं बुला पाएंगे,
शायद आप यहां केवल यही कर सकते हैं
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);
अपडेट करें :सौभाग्य से, आप स्वतंत्र इनपुट को स्वीकार करते हुए अलग-अलग अनुक्रमिक बयानों की सूची बनाकर इस पर काम कर सकते हैं:
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>