宣布全球临时表

问题描述 投票:0回答:2

DB2 / 400 SQL:我在使用全局临时表的sql函数中工作。我有一个问题来声明这个表:SQL发给我一个错误,但我没有看到问题出在哪里?有人可以告诉我这个错误是什么?

Function with a declaring global temporary table

sql db2-400 temporary
2个回答
0
投票

我不会说或读法语,但似乎错误告诉您函数定义需要返回值,但函数体不会返回任何内容。

现在,在创建SQL标量函数时,函数体以声明开始。这些声明适用于变量和游标。使用以DECLARE开头的语句创建全局临时表有点不幸。它不属于声明,而属于程序体。

                      .-NOT ATOMIC-.   
>>-+--------+--BEGIN--+------------+---------------------------->
   '-label:-'         '-ATOMIC-----'   

>--+---------------------------------------+-------------------->
   | .-----------------------------------. |   
   | V                                   | |   
   '---+-SQL-variable-declaration--+-- ; +-'   
       +-SQL-condition-declaration-+           
       +-return-codes-declaration--+           
       '-INCLUDE-statement---------'           

>--+--------------------------------------+--------------------->
   | .----------------------------------. |   
   | V                                  | |   
   '---+-DECLARE CURSOR-statement-+-- ; +-'   
       '-INCLUDE-statement--------'           

>--+---------------------------------+-------------------------->
   | .-----------------------------. |   
   | V                             | |   
   '---+-handler-declaration-+-- ; +-'   
       '-INCLUDE-statement---'           

   .---------------------------------.                   
   V                                 |                   
>----+-----------------------------+-+--END--+-------+---------><
     '-SQL-procedure-statement-- ; '         '-label-'

它是SQL过程语句的一部分!


0
投票

声明部分必须在创建任何表之前。

虽然看起来反直觉,但DECLARE GLOBAL TEMPORARY TABLE不是正常的变量声明。

尝试移动表声明上方的其他变量声明。

© www.soinside.com 2019 - 2024. All rights reserved.