db2 自定义函数问题

createfunctionaddtest()returnsintlanguagesqlmodifiessqldatabeginatomicdeclarev_cntint... create function addtest()
returns int
language sql
modifies sql data
begin atomic
declare v_cnt integer;
declare v_dsj integer;
declare v_wsj integer;
declare v_str varchar(255) default '0';
set v_cnt = 0;
set v_dsj = 1396281600000;
while(v_cnt <= 90)do
set v_dsj = v_dsj + v_cnt*1000*60*60*24;
set v_cnt = v_cnt+1;
set v_wsj = v_dsj + v_cnt * 1000*60*60*24;
set v_str = (select jivemsg_mark.uri from jivemsg_mark where jivemsg_mark.createtime >= v_dsj and jivemsg_mark.createtime <= v_wsj and jivemsg_mark.sender = 'itw_liyx' order by jivemsg_mark.createtime fetch first 1 rows only);
insert into msgtk1(msgtk1.uri) values(v_str);
end while;
return 0;
end
哪里有问题啊,一直提示 modifies sql data 子句的多个关键字或有冲突的关键字 sqlcode -628
展开
 我来答
拂桐花A
2014-09-03 · TA获得超过507个赞
知道答主
回答量:190
采纳率:0%
帮助的人:46.9万
展开全部
atomic是将该部分程序块指定为一个整体,其中任何一个语句失败,则整个程序块都相当于没做,包括包含在atomic块内的已经执行成功的语句也相当于没做,有点类似于transaction。

这个 atomic 一般是使用在 触发器上面的。

而你的是 自定义 函数。 不更新任何数据的, 加 atomic 没有意义啊!
追问
去掉?去掉了好像可以执行了。。但是一运行还是报错,我上面的语法或者逻辑是不是有问题啊。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式