2017-10-01 12 views
0

ユーザー入力 'n'回かかるPL/SQLプログラムを作成したいとします。ここではnは10ですが、これは入力1時間しかかかりませんが、入力値はループが1から10になるまで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から10までの間に、入力値を1回だけ入力し、その入力値を10回表示します。 –

0

PL/SQLは、対話型言語ではありません。値を求めるプロンプトを表示するのはSQL * Plusで、実行するデータベースにPL/SQLブロックを送信する前に、必要なすべての置換値を取得する必要があります。

したがって、PL/SQLがユーザーにループ入力を促す方法はありません。コメントを通じて読む

+0

私に与えられたタスクは次のとおりです: "loop-pl/sqlを使ってテーブルに10レコードを挿入" –

+0

テーブルに5つのカラムがある場合は、50個の変数を挿入する必要がありますか? –

+0

@DaniyalJavaid私が言ったように、対話的アクションを使用することはできません。しかし、いくつかの方法があります、あなたはループカウンターを使用することができますまたは他のテーブルを使用することができます – Ravi

0

:私に与えられ

タスクがした - "ループを使用して、テーブルに10件のレコードを挿入 - PL/SQL" を

をテーブルに5つの列がある場合、挿入するには50個の変数を使用する必要がありますか? あなたがあなたのテーブルに10回を挿入することがsame set of recordsをしたい場合は、あなたの上記の質問に

回答は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. 
関連する問題