我希望能够根据用户输入将可变数量的行插入表中?例如。
Please enter value, enter "done" when no more values: value 1
Please enter value, enter "done" when no more values: value 2
Please enter value, enter "done" when no more values: done
2 Rows inserted successfully.
我不确定如何临时存储行,也不知道如何多次要求用户插入数据。 pl/sql 有数组吗?
Thanks
正如其他人所说,单独的 PL/SQL 并不适合这项任务,您需要一个顶部的 UI 来与最终用户交互。但是,如果您确实需要在 SQL Plus 中执行此操作,则可以使用我在这个问题 https://stackoverflow.com/questions/1850105/how-to-create-a-menu-in-sqlplus-or-pl-sql/1851872#1851872.
您需要创建 2 个 SQL Plus 脚本:
1) 执行单个插入的脚本,这里称为 script_insert.sql:
insert into t1 values ('&1.');
@main
2)控制进程的脚本,这里称为main.sql:
accept selection prompt "Please enter value, enter 'done' when no more values: "
set term off verify off
column script new_value v_script
select case '&selection.'
when 'done' then ''
else '@script_insert &selection.'
end as script
from dual;
set term on
@&v_script.
现在在 SQL Plus 中你可以像这样运行它:
SQL> select * from t1;
no rows selected
SQL> @main
Please enter value, enter 'done' when no more values: 1
Please enter value, enter 'done' when no more values: 2
Please enter value, enter 'done' when no more values: 3
Please enter value, enter 'done' when no more values: done
SQL> select * from t1;
N1
----------
1
2
3
让我重申一下,这表明它是可以完成的,我不会声称它是实现需求的好方法 - 除非它只是 DBA 或开发人员使用的临时工具。我永远不会给end userSQL Plus 作为 UI!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)