示例如下:
Declare
stringtest VARCHAR2(10):='yes';
Begin
INSERT WHEN (condition) THEN -- the condition has to be like stringtest='yes';
INTO ...
Select ...
End;
但我不能像
那样做Begin
INSERT WHEN TRUE THEN
INTO ...
Select ...
End;
让条件成真的最简单方法是什么?
答案 0 :(得分:1)
最简单(和最正确)的方法是将条件移动到select'where'子句中。如果select没有返回(选择),则不会插入任何内容。 即。
insert into table(col1,col2)
select 'colval1', 'colval2'
from dual
where 2=3
将不选择任何内容并且不插入任何内容
答案 1 :(得分:1)
TRUE
(独立,或者恰好位于PL / SQL块中) )。
您可以使用始终计算结果为true的虚拟表达式,例如:
INSERT WHEN (1=1) THEN
INTO ...
Select ...
除非这是一个更大的INSERT ALL
结构的“固定”部分,否则该条款似乎相当多余,如果你知道它总是必须是真的;如果你没有评估真实的东西,WHEN
子句不会添加任何有用的东西。如果您想将它用作控制行为的标志,那么您的stringtest
方法可能会更容易,因为您可以在一个地方更改该设置 - 在声明部分 - 而不是搜索并更改所有个人{ {1}}条款。