在 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。
我想 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。