Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查当前会话中是否存在声明的全局临时表_Java_Sql_Db2_Temp Tables - Fatal编程技术网

Java 检查当前会话中是否存在声明的全局临时表

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

如何检查DB2中声明的全局临时表在当前会话中是否存在

我需要为一个用户会话创建一次临时表,然后在我的应用程序中,每次执行报告时都能够在其中插入行。因此,当报表执行时间超过第一次时,我需要删除该表中的所有行,然后用新行重新填充它

现在,创建临时表的方法在第二次执行时抛出
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中可能会支持它真正的释放。