【问题标题】:Taking user input 'n' times PL/SQL接受用户输入“n”次 PL/SQL
【发布时间】:2017-10-02 15:17:56
【问题描述】:

我想编写一个接受用户输入“n”次的 PL/SQL 程序。这里 n 是 10,但这只需要输入 1 次并显示该输入值 10 次,因为循环是从 1 到 10。我如何编写一个程序来获取“n”个输入值并显示它们。

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

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

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:
    set serveroutput on;
    DECALRE
    num NUMBER(10) := #
    
    BEGIN
    
    for i in 1..10 
    loop
        dbms_output.put_line(num);
        END loop;
    END;
    /
    

    【讨论】:

    • 也许我不明白,但这部分让我觉得我是正确的“这里的 n 是 10,但这只需要输入 1 次并显示输入值 10 次,因为循环是从 1到 10 点。”
    【解决方案2】:

    PL/SQL 不是交互式语言。提示您输入值的是 SQL*Plus,它需要获取所有需要的替换值,然后才能将 PL/SQL 块发送到数据库以执行。

    因此,PL/SQL 无法在循环中提示用户输入。

    【讨论】:

    • 给我的任务是:-“使用循环将 10 条记录插入表中 - pl/sql”
    • 所以如果一个表中有 5 列,我是否必须使用 50 个变量进行插入?
    • @DaniyalJavaid 正如我所提到的,无法使用交互式操作。但是,有几种方法,您可以使用循环计数器或使用其他表
    【解决方案3】:

    通读cmets:

    给我的任务是:-“使用循环将 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.
    

    输出:

    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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      相关资源
      最近更新 更多