首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PL/SQL函数中使用游标时出现的DB2错误

在PL/SQL函数中使用游标时出现的DB2错误
EN

Stack Overflow用户
提问于 2012-09-28 08:12:21
回答 1查看 2.1K关注 0票数 1

我在DB2 PL/SQL函数中声明游标如下:

代码语言:javascript
复制
create function query1(tbname VARCHAR(32), msisdn VARCHAR(32)) 
returns VARCHAR(40) 
LANGUAGE SQL 
READS SQL DATA 
NO EXTERNAL ACTION 
DETERMINISTIC 
begin atomic 
    DECLARE vsql varchar(2000); 
    DECLARE dt_UTC   date; 
    DECLARE C1 CURSOR FOR select productid from Subscription_000 where msisdn= 123456; 
    SET vsql = 'select productid from Subscription_000 where msisdn= 123456'; 
OPEN C1; 


    return '123'; 
end 
@ 

我将上面的内容保存到k2.sql中,当我试图使用命令: db2 -td@ -f k2.sql编译这个函数时,我得到了以下错误:

DB21034E命令作为SQL语句处理,因为它不是有效的命令行处理器命令。在SQL处理期间,它返回: SQL0104N,在“声明C1游标”之后找到了一个意外的标记"FOR“。预期的令牌可能包括:"“。线NUMBER=10. SQLSTATE=42601

这里有什么问题吗.?

EN

回答 1

Stack Overflow用户

发布于 2012-09-28 08:53:21

这是一个棘手的问题,但经过一些测试后,我发现了问题:您不能在原子复合语句中声明游标。将BEGIN ATOMIC替换为BEGIN

我希望我能为您指出ATOMIC允许的语句列表,但是它隐藏在手册的某个地方,目前我找不到它。

(这是DB2可怕的错误报告的典型例子。它不应该识别一个不被允许的陈述并告诉你吗?)

编辑:这是一个问题,但也有其他一些问题,我没有,所以我不能调试它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12636126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档