2016-11-21 92 views
-1

我相信这个问题很微不足道。我无法选择我定义的存储过程中的行,也不能在UDF中选择。这里是我使用的语法:如何在DB2 LUW中的存储过程或UDF中“选择”?

Create Or Replace Procedure GenerateSequence(
In InternalUnitID SmallInt, 
In ObjectTypeID SmallInt) 

Language SQL 
Dynamic Result Sets 1 
Not Deterministic 
No External Action 
Modifies SQL Data 
Commit On Return Yes 
Begin 
Select Number 
From Sequence 
Where InternalUnit=InternalUnitID 
    And ObjectType=ObjectTypeID; 
End 

如果我尝试创建上述过程(通过将定义放入SQL文件并运行它)。我收到以下错误消息: DB21034E该命令作为SQL语句处理,因为它不是有效的命令行处理器命令。在SQL处理期间,它返回:

SQL0104N An unexpected token "Select Number From Sequence Where Intern" was 
found following "n Return Yes Begin ". Expected tokens may include: "". 
LINE NUMBER=21. SQLSTATE=42601 

任何线索可能是什么原因导致此问题?

我的环境是Windows上的DB2 10.5 Express。

+1

看看手册。 https://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008329.html?pos=2要返回结果集,只需简单地声明一个光标并在退出程序之前打开它。 – Charles

+0

数字和序列都是保留字 – Hogan

+1

为我创建SP最难的部分是始终使用命令行选项正确使用';'中的不同批终止符,因此我可以在我的SP代码中包含';'。 – Hogan

回答