這是瘋了,但...基於this answer I gave to another question您可以創建一個名爲main.sql這樣的腳本:
accept x prompt please enter value for x
accept y prompt please enter value for y
accept z prompt please enter value for z
set term off verify off
column script new_value v_script
select case when '&&x.' is null or '&&y.' is null or '&&z.' is null
then 'main'
else 'do_insert'
end script
from dual;
set term on verify on
@@&v_script.
然後創建另一個腳本,稱爲do_insert.sql li柯本:
insert into mytable (a, b, c) values ('&&x.', '&&y.', '&&z.');
的main.sql腳本將繼續重新運行本身,直到所有的X,Y和Z各自爲NOT NULL - 讓用戶重新輸入他們的所有各一次。一旦全部不爲空,它將運行使用這些值的do_insert.sql。
請注意,每次main.sql重新運行時,它都是嵌套調用; SQL開發(例如)失敗,最終如果用戶保持省略值的誤差:
SP2-0309:SQLcl命令程序僅可嵌套到 20.
但實際上的深度,如果你想要一個體面的用戶界面,SQL Plus腳本不是構建它的方法。
我不認爲你可以。你可以指定一個數據類型,但我不認爲你可以阻止它爲空。是否強制腳本終止,如果沒有價值提供了一個合適的選擇? (雖然插入無論如何會失敗...) –