首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

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

2012-02-21 
DB2存储过程中有回车换行符就报错?create procedure b_test(out ret varchar(20)) language sql begin set

DB2存储过程中有回车换行符就报错?
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,多谢指点。

[解决办法]
你用的什么工具写的存储过程 ,你看看是否是设置了行结束符。
[解决办法]
我是进来学习的。
[解决办法]
我是进来学习的。
[解决办法]
那在最后一行的“;”要换成一个你自定义的结束符,如“@”。即:
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'; ”代码就结束了,显然不是如此。所以要另弄个结束符以告诉命令行你代码的结束。
[解决办法]
我也碰到过这样的情况,但是我还是将这个“;”换行就可以了

热点排行