在 FUNCTION 中引用 DGTT(声明的全局临时 table)时 SQL0526N

SQL0526N when referencing a DGTT (Declared global temporary table) in a FUNCTION

我想 return 来自预先创建的 DGTT 的内容作为 table 函数的结果集。

但是当我引用它时,我得到 SQL SQL0526N / SQLSTATE 42995 错误。

我不明白为什么。 Documentation 只说 42995 sqlstate 错误的 3 个原因:

Restrictions on the use of declared temporary tables: Declared temporary tables cannot:
- Be specified in an ALTER, COMMENT, GRANT, LOCK, RENAME or REVOKE statement (SQLSTATE 42995).
- Be referenced in an AUDIT, CREATE ALIAS, or CREATE VIEW statement (SQLSTATE 42995).
- Be specified in referential constraints (SQLSTATE 42995).

但其中 none 个正在使用.. 功能非常简单:

BEGIN  ATOMIC 

    CALL DBAREP.SP_ROW_CHECKSUM(sSchema, sTable, sColumnList, sWhere, iRows) ;     

    RETURN 
         (SELECT * FROM SESSION.DBAREP_ROW_CHECKSUM ) ;
END@

我这次犯了什么规矩?

确实没有在文档中明确说明,但是 Declared GTT 不能在内联复合语句中使用(使用 BEGIN ATOMIC ... END)。
您可以在内联复合语句中使用 Created GTT。