DB2 / 400 SQL:我正在使用sql函数,但是正在使用全局临时表。我有一个问题要声明此表:SQL向我发送错误,但是我看不出问题出在哪里?有人可以告诉我这个错误是什么吗?
答案 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不是普通的变量声明。
尝试将其他变量声明移到表声明上方。