DB2存储过程中有回车换行符就报错?

中泽三郎 2010-01-30 04:32:09
create procedure b_test(out ret varchar(20)) language sql begin set ret = 'help'; end ;

这种写法在图形界面和db2 -tvf D:\liuguanju\sp.sql都能成功创建。




create procedure b_test(out ret varchar(20))
language sql
begin
set ret = 'help';
end ;

这种写法死活建不上去,报错如下:
F:\Program Files\IBM\SQLLIB\BIN>db2 -tvf D:\liuguanju\sp_test.sql
create procedure b_test(out ret varchar(20))
language sql
begin
set ret = 'help'
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0104N 在 "et ret = 'help'" 后面找到异常标记
"END-OF-STATEMENT"。预期标记可能包括:"<psm_semicolon>"。 LINE NUMBER=4.
SQLSTATE=42601

end
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0104N 在 "end" 后面找到异常标记 "END-OF-STATEMENT"。预期标记可能包括:"JOIN
<joined_table>"。 SQLSTATE=42601

图形界面执行也是如此。

本人初学DB2,多谢指点。
...全文
531 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckn126 2010-02-01
  • 打赏
  • 举报
回复
我也碰到过这样的情况,但是我还是将这个“;”换行就可以了
plikefly 2010-01-31
  • 打赏
  • 举报
回复
那在最后一行的“;”要换成一个你自定义的结束符,如“@”。即:
create procedure b_test(out ret varchar(20))
language sql
begin
set ret = 'help';
end@

则运行db2 -td@ -vsf D:\liuguanju\sp.sql就OK了。
因为db2 -tvf的默认结束符为“;”,即认为到“set ret = 'help'; ”代码就结束了,显然不是如此。所以要另弄个结束符以告诉命令行你代码的结束。
中泽三郎 2010-01-31
  • 打赏
  • 举报
回复
图形界面那设置好结束符后过程可以建上了,但DB2如何在命令行中设置结束标识符?就是设置这个结束符的语句是什么?
中泽三郎 2010-01-31
  • 打赏
  • 举报
回复
控制中心的命令编辑器中的结束符设置的是“;”,存储过程是在UE里面写的,这个也要设置结束符?
sixsat 2010-01-31
  • 打赏
  • 举报
回复
我是进来学习的。
fiffri 2010-01-31
  • 打赏
  • 举报
回复
我是进来学习的。
yangxiao_jiang 2010-01-30
  • 打赏
  • 举报
回复
你用的什么工具写的存储过程 ,你看看是否是设置了行结束符。

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧