Oracle:通过在pl / sql程序中从用户那里获取输入,在表中插入多行

时间:2015-04-04 06:48:59

标签: oracle plsql insert sqlplus substitution

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

一些示例代码是

begin
for i in 1..3
loop

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

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

有没有办法在每次循环迭代时从用户那里得到不同的输入。

1 个答案:

答案 0 :(得分:0)

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

虽然可以在SQL*Plus中进行,但我仍然想知道究竟谁想要将SQL * Plus作为用户界面提供给用户。

无论如何,你需要两个脚本来完成任务,一个插入脚本来执行插入,另一个脚本来控制用户输入并清除退出。

<强> insert.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