【问题标题】:Oracle:inserting multiple rows into table by taking input from user in pl/sql programOracle:通过在 pl/sql 程序中获取用户的输入,将多行插入表中
【发布时间】:2015-06-09 05:12:53
【问题描述】:

如何通过谈论来自用户的输入来将多行插入表中 在 pl/sql 程序中使用循环插入表名值(&value1,'&value2',...)。

一些示例代码是

begin
for i in 1..3
loop

    insert into tablename values(&value1,'&value2');
end loop;
end;

上面的代码只接受一次输入,但是它将相同的数据插入到表中3次。

有什么方法可以让用户在每次循环迭代时获得不同的输入。

【问题讨论】:

  • PL/SQL 不适用于此任务。无论如何,请参阅我的答案以获取更多详细信息。

标签: oracle plsql insert sqlplus substitution


【解决方案1】:

PL/SQL 不是交互式的,因此不适合接受用户输入。我建议为此任务向最终用户提供 UI。 & 用于SQL*Plus 中的替换变量

虽然在SQL*Plus 中是可能的,但是,我仍然想知道到底谁愿意将 SQL*Plus 作为 UI 提供给用户。

无论如何,您将需要两个脚本来完成该任务,一个用于执行插入的插入脚本,另一个用于控制用户输入和干净退出的脚本。

插入.sql:

INSERT INTO tablename VALUES
  ('&value'
  );

control.sql:

ACCEPT SELECTION PROMPT "Enter values to insert, enter 'exit' when no more values to insert :"

SET TERM OFF VERIFY OFF

COLUMN USER_MENU NEW_VALUE SCRIPT

SELECT
  CASE '&selection.'
    WHEN 'exit'
    THEN NULL
    ELSE '@insert &menu.'
  END AS user_menu
FROM dual;

SET TERM ON

@&script

【讨论】:

    猜你喜欢
    • 2017-10-18
    • 2017-09-18
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    相关资源
    最近更新 更多