Syntax IBM Db2中存在if的语法
如果某个表存在,但它似乎不适用于IBM Db2,则follow查询会删除该表Syntax IBM Db2中存在if的语法,syntax,db2,if-statement,Syntax,Db2,If Statement,如果某个表存在,但它似乎不适用于IBM Db2,则follow查询会删除该表 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 然而,如果我使用DML语句而不是table drop语句,那么相同的if exists语法
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
然而,如果我使用DML语句而不是table drop语句,那么相同的if exists语法也可以工作。在此方面的任何帮助都将不胜感激
更新1:我了解到您不能在begin原子块内运行DDL语句,因此我的第一条语句失败,但第二条语句运行正常 DB2禁止在原子SQL块中使用DDL是正确的。IBM发布了一个名为db2perf\u quiet\u drop的免费附加程序,它可以按照您想要的方式工作。我这样做的方式如下
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
我的customStoredProc只有一个stmt execute immediate@dynsql 您是否收到错误消息?如果是的话,你能贴出来吗?