2017-10-01 40 views
0

我想寫一個PL/SQL程序,用戶輸入'n'次。這裏n是10,但是這隻需要輸入1次,並且顯示該輸入值10次,因爲循環是從1到10.我怎樣編寫一個程序,該程序取'n'個輸入值並顯示它們。用戶輸入'n'次PL/SQL

set serveroutput on; 
DECALRE 
num NUMBER(10); 
BEGIN 

for i in 1..10 
loop 
    dbms_output.put_line(&num); 
    END loop; 
END; 
/

回答

0
set serveroutput on; 
DECALRE 
num NUMBER(10) := # 

BEGIN 

for i in 1..10 
loop 
    dbms_output.put_line(num); 
    END loop; 
END; 
/
+0

我想,你沒看過OP的問題 – Ravi

+0

也許我不明白,但這個部分讓我覺得我是正確的「這裏n爲10,但是這僅輸入1次,並且當循環從1到10時顯示該輸入值10次。「 –

0

PL/SQL不是一個交互的語言。 SQL * Plus會提示您輸入一個值,並且它需要獲取所需的所有替換值,然後才能將PL/SQL塊發送到要執行的數據庫。

因此,PL/SQL無法提示用戶輸入循環。

+0

給我的任務是: - 「使用循環插入10條記錄 - pl/sql」 –

+0

因此,如果表中有5列,我是否必須使用50個變量進行插入? –

+0

@DaniyalJavaid,因爲我提到它不可能使用交互式操作。但是,有幾種方法,你可以使用循環計數器或可以使用其他表 – Ravi

0

讀通過評論:給我

任務是: - 「使用循環插入10個記錄到一個表 - PL/SQL」

所以如果表格中有5列,我是否需要使用50個變量 來插入?如果你想same set of records要插入到表中10次

回答你上面的問題是NO。以下是你可以做到的方式。當您執行該塊時,它會要求您提升5列的值,並相應地將10組具有相同值的記錄插入表中。見下文。

SQL> DECLARE 
     num1 NUMBER (10) := &num1; 
     num2 NUMBER (10) := &num2; 
     num3 NUMBER (10) := &num3; 
     num4 NUMBER (10) := &num4; 
     num5 NUMBER (10) := &num5; 
    BEGIN 
     FOR i IN 1 .. 10 
      LOOP 
      INSERT INTO TAB (col1, 
          col2, 
          col3, 
          col4, 
          col5) 
       VALUES (num1, 
         num2, 
         num3, 
         num4, 
         num5); 
     END LOOP; 
     COMMIT; 
    END; 
    / 
    Enter value for num1: 1 
    old 2: num1 NUMBER (10) := &num1; 
    new 2: num1 NUMBER (10) := 1; 
    Enter value for num2: 2 
    old 3: num2 NUMBER (10) := &num2; 
    new 3: num2 NUMBER (10) := 2; 
    Enter value for num3: 3 
    old 4: num3 NUMBER (10) := &num3; 
    new 4: num3 NUMBER (10) := 3; 
    Enter value for num4: 4 
    old 5: num4 NUMBER (10) := &num4; 
    new 5: num4 NUMBER (10) := 4; 
    Enter value for num5: 5 
    old 6: num5 NUMBER (10) := &num5; 
    new 6: num5 NUMBER (10) := 5; 

    PL/SQL procedure successfully completed. 

OUTPUT:

SQL> select * from tab;  

     COL1  COL2  COL3  COL4  COL5 
---------- ---------- ---------- ---------- ---------- 
     1   2   3   4   5 
     1   2   3   4   5 
     1   2   3   4   5 
     1   2   3   4   5 
     1   2   3   4   5 
     1   2   3   4   5 
     1   2   3   4   5 
     1   2   3   4   5 
     1   2   3   4   5 
     1   2   3   4   5 

10 rows selected.