DB2 / 400 SQL:我在使用全局临时表的sql函数中工作。我有一个问题来声明这个表:SQL发给我一个错误,但我没有看到问题出在哪里?有人可以告诉我这个错误是什么?
我不会说或读法语,但似乎错误告诉您函数定义需要返回值,但函数体不会返回任何内容。
现在,在创建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过程语句的一部分!
声明部分必须在创建任何表之前。
虽然看起来反直觉,但DECLARE GLOBAL TEMPORARY TABLE不是正常的变量声明。
尝试移动表声明上方的其他变量声明。