麻烦看下在DB2编辑器中怎么总是执行不过去报错
create procedure testif (in friend varchar(40))
language sql
specific testif
begin
declare s_id integer default 1;
update studentinfo set sname='李四' where sid=s_id;
if friend='1' then
commit;
elseif friend='2' then
rollback;
else
update studentinfo set sname='赵六' where sid=s_id;
commit;
end if;
insert into studentinfo values(22,'刘备',1,'1987-7-20',10,20,8)
commit;
end@
------------------------------------------------------------------------------
create procedure testif (in friend varchar(40))
language sql
specific testif
begin
declare s_id integer default 1;
update studentinfo set sname='李四' where sid=s_id;
if friend='1' then
commit;
elseif friend='2' then
rollback;
else
update studentinfo set sname='赵六' where sid=s_id;
commit;
end if;
insert into studentinfo values(22,'刘备',1,'1987-7-20',10,20,8)
commit;
end
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "' where sid=s_id; " 后面找到异常标记
"if"。预期标记可能包括:"
"。 LINE NUMBER=6. SQLSTATE=42601
SQL0104N 在 "' where sid=s_id;
" 后面找到异常标记 "if"。预期标记可能包括:" "。
解释:
在文本 "<文本>" 后面的指定标记处检测到 SQL
语句中或 SYSPROC.ADMIN_CMD
过程的输入命令字符串中的语法错误。 "<文本>"
字段指示无效标记前面的 SQL 语句中或 SYSPROC.ADMIN_CMD
过程的输入命令字符串的 20 个字符。
作为帮助,在 SQLCA 的 SQLERRM
字段中,提供了有效标记的部分列表作为
"<标记列表>"。此列表假设语句到该位置为止
是正确的。
无法处理该语句。
用户响应:
在指定的标记区域内检查并更正语句。
sqlcode : -104
sqlstate : 42601
结束符我也改为@了啊