声明全球临时表

时间:2019-03-18 16:10:20

标签: sql db2-400 temporary

DB2 / 400 SQL:我正在使用sql函数,但是正在使用全局临时表。我有一个问题要声明此表:SQL向我发送错误,但是我看不出问题出在哪里?有人可以告诉我这个错误是什么吗?

Function with a declaring global temporary table

2 个答案:

答案 0 :(得分: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过程语句的一部分!

答案 1 :(得分:0)

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

虽然看起来很直观,但DECLARE GLOBAL TEMPORARY TABLE不是普通的变量声明。

尝试将其他变量声明移到表声明上方。