IBM Db2中存在if的语法

Csh*_*hah 6 db2 syntax if-statement

如果表存在,则后续查询会删除表,但它似乎不适用于IBM Db2.

Begin atomic

if( exists(

SELECT 1 FROM SYSIBM.SYSTABLES 
            WHERE NAME='EMAIL' AND TYPE='T' AND creator = 'schema1'
)) then
drop table EMAIL;
end if;
End
Run Code Online (Sandbox Code Playgroud)

如果我有一个DML语句而不是表drop语句,那么相同的if exists语法会起作用.对此有任何帮助表示赞赏

更新1:我读到你不能在开始原子块内运行DDL语句因此我的第一个语句失败但第二个没问题.

Csh*_*hah 9

我这样做的方式如下

Begin atomic

  if( exists( SELECT 1 
              FROM SYSIBM.SYSTABLES 
              WHERE NAME='EMAIL' AND TYPE='T' AND creator = 'schema1' 
            )
    ) 
    then customStoredproc('drop table EMAIL'); 

  end if;

End
Run Code Online (Sandbox Code Playgroud)

我customStoredProc只是有一个语句执行即时@dynsql;