【发布时间】:2015-09-17 08:23:56
【问题描述】:
我有这样的程序:
create or replace procedure smth
is
some_variable varchar(2;
begin
insert into **table**(col1,col2) (Select id,'text' from TABLE2),
insert into table(col1,col2) (Select id,'text' from TABLE3)
我想要做的是为这种情况添加一些 if-else(或 smoething else)语句,例如。表 2 不存在。 如果 Table2 不存在,则从 DUAL 插入 table ('smth','nameoftable')。我确切地知道 table2 的名称是什么。 (但由于某种原因,该表可能会从数据库中删除)。
如果我能这样做就太好了:
insert into **table**(col1,col2) if table2 doesn't exist then Select (1,'TABLE2') else (Select id,'text' from TABLE2),
if table3 doesn't exist then Select (1,'TABLE3') insert into table(col1,col2) else (Select id,'text' from TABLE3)
针对每种情况。
编辑
insert into **table**(col1,col2) (Select id,'text' from TABLE2),
insert into table(col1,col2) (Select id,'text' from TABLE3)
insert into table(col1,col2) (Select id,'text' from TABLE4)
insert into table(col1,col2) (Select id,'text' from TABLE4)
假设 table3 不存在,那么我想要的只是 INSERT into table ( Select 'text','text2' from dual。
【问题讨论】:
-
这是一个非常奇怪的案例;一张桌子不在那里,然后只需使用另一张桌子。在存储过程中使用 INSERT 语句,当表被删除时,您的过程将变得无效。因此,您需要动态 SQL,因此 DBMS 不会看到该表在过程中使用。
-
你好,我没有准确地说出我的期望。如果表不存在,则插入'text',text2' FROM DUAL