刚学习使用db2,在创建自定义函数时遇到一个问题,函数代码如下

createorreplacefunctionF_GETDATE_BY_Q(p_quarterinteger)languagesqlspecificF_GETDATE_B... create or replace function F_GETDATE_BY_Q(p_quarter integer)
language sql
specific F_GETDATE_BY_Q
returns varchar(8)
begin atomic
declare v_result varchar(8);
declare v_current_date varchar(8);
declare v_date_of_quarter_end varchar(8);
declare v_date_of_quarter_begin varchar(8);

set v_current_date = (select to_char(current date,'YYYYMMDD') from sysibm.sysdummy1);
set v_date_of_quarter_end = (select max(biz_date) from f_com_com_date where year = year(current date) and q = p_quarter);
set v_date_of_quarter_begin = (select min(biz_date) from f_com_com_date where year = year(current date) and q = p_quarter);

if (v_current_date < v_date_of_quarter_begin) then
set v_result = '19000230';
else if (v_current_date >= v_date_of_quarter_begin and v_current_date <= v_date_of_quarter_end) then
set v_result = v_current_date;
else if (v_current_date > v_date_of_quarter_end) then
set v_result = v_date_of_quarter_end;
end if;

return v_result;
end

>[错误] 脚本行:24-24 -------------------------------------
An unexpected token "END-OF-STATEMENT" was found following "end". Expected tokens may include: "JOIN <joined_table>".. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.53.71
麻烦大家给看下是哪儿出错了,先谢了
展开
 我来答
liubird
2012-05-04 · TA获得超过1932个赞
知道小有建树答主
回答量:898
采纳率:100%
帮助的人:939万
展开全部
你是怎么执行的脚本呢? 使用db2 -td# proc.sql这样执行的吗?
那样的话,你需要在procedure的末尾end的后面加一个‘#’符号,表示结束。

如下:
return v_result;
end #
追问
我是用的Data Studio这个客户端工具来执行的,试过加"#"和"@"都不行
追答
data studio 没用过,
不过你可以把它copy到文件里,然后再命令行里面执行。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式