Java 检查当前会话中是否存在声明的全局临时表
如何检查DB2中声明的全局临时表在当前会话中是否存在 我需要为一个用户会话创建一次临时表,然后在我的应用程序中,每次执行报告时都能够在其中插入行。因此,当报表执行时间超过第一次时,我需要删除该表中的所有行,然后用新行重新填充它 现在,创建临时表的方法在第二次执行时抛出Java 检查当前会话中是否存在声明的全局临时表,java,sql,db2,temp-tables,Java,Sql,Db2,Temp Tables,如何检查DB2中声明的全局临时表在当前会话中是否存在 我需要为一个用户会话创建一次临时表,然后在我的应用程序中,每次执行报告时都能够在其中插入行。因此,当报表执行时间超过第一次时,我需要删除该表中的所有行,然后用新行重新填充它 现在,创建临时表的方法在第二次执行时抛出42710 SQLSTATE错误 此语句是否适用于我的实现:DECLARE CONTINUE HANDLER for SQLSTATE'42710'SET DGTT_FOUND=1,以及如何在Java中使用它(executeUpda
42710 SQLSTATE错误
此语句是否适用于我的实现:DECLARE CONTINUE HANDLER for SQLSTATE'42710'SET DGTT_FOUND=1
,以及如何在Java中使用它(executeUpdate()
?),因为声明的临时表未在目录中定义,并且它们仅在当前会话中可见(每个会话可能对同一临时表名有不同的定义),您只能尝试查询该表并分析答案
首先,试试看
select count(0) from session.myTempTable
如果DB2说它不存在,那么您可以定义一个新表
如果DB2说它确实存在,您可以创建或删除它,以便重新创建它
但是,SQL过程中可以使用处理程序,因此您应该创建一个SP,以便在查询之前调用。该SP将检查表是否存在,并且您将在表存在和不存在时放置您想要执行的操作
参考资料:
处理-
表-由于声明的临时表未在目录中定义,并且它们仅在当前会话中可见(每个会话可能对同一临时表名有不同的定义),因此您只能尝试查询该表并分析答案
首先,试试看
select count(0) from session.myTempTable
如果DB2说它不存在,那么您可以定义一个新表
如果DB2说它确实存在,您可以创建或删除它,以便重新创建它
但是,SQL过程中可以使用处理程序,因此您应该创建一个SP,以便在查询之前调用。该SP将检查表是否存在,并且您将在表存在和不存在时放置您想要执行的操作
参考资料:
处理-
Tables-根据您的DB2版本,您可以在声明临时表时使用WITH REPLACE
选项,这不仅可以成功地声明表,而且还可以删除以前插入的行
DECLARE GLOBAL TEMPORARY TABLE mytab (
...
) NOT LOGGED WITH REPLACE
根据您的DB2版本,您可以在声明临时表时使用WITH REPLACE
选项,这取决于您的DB2版本(您很方便地没有指出),这不仅会成功,即使该表以前已经声明过,而且还会删除以前插入的行
DECLARE GLOBAL TEMPORARY TABLE mytab (
...
) NOT LOGGED WITH REPLACE
这将适用于DB2 LUW和DB2 for i,但不适用于使用DB2 z/OS的用户。至少从v10开始,DB2 z/OS不支持WITH REPLACE,但在将来的版本中可能会支持它。这将适用于DB2 LUW和DB2 for i,但不适用于使用DB2 z/OS的用户。DB2 z/OS不支持WITH REPLACE,至少从v10开始,但在fu中可能会支持它真正的释放。