日期:2014-05-16  浏览次数:20708 次

mysql存储过程游标的一个问题
我想在数据库中查询有无给定条件的记录,如果有就返回FALSE如果无就返回TRUE,然后再用IF语句控制执行下面的程序。
create   procedure   st1(in   xuehao   varchar(10),in   xingming   varchar(50),in   academyno   smallint(2),in   banji   varchar(20),in   email   varchar(20),in   passwd   varchar(20),out   flag   bool)
begin
declare   a   varchar(10);
declare   getstudentno   cursor   for   select   studentno   from   user   where   studentno=xuehao;
set   flag=false;
open   getstudentno;
fetch   getstudentno   into   a;
if   a!=null   ||   a!= " "     then
insert   into   user(studentno,name,academyno,usertype,class,email,passwd)   values
(xuehao,xingming,academyno,banji,email,passwd);
set   flag=true;
end   if;
close   getstudentno;
end

我用这个试了一下   错误提示是说FETCH是空值
很痛苦
我想我问一下大家MYSQL存储过程中是否有判断游标内是否为空的函数啊
最好能给个例子谢谢

------解决方案--------------------
不用使用游标的


参考:
DECLARE _item_in_used INT;
SELECT COUNT(*) INTO _item_in_used FROM order_detail WHERE item_id = _item_id;

/* do not update name,
UI should protected changing name
but we protected it again in the proc ...
*/
IF _item_in_used > 0 THEN
UPDATE items SET cat_id = _cat_id, code = _code, price = _price WHERE item_id = _item_id;
ELSE
UPDATE items SET cat_id = _cat_id, code = _code, name = _name, price = _price WHERE item_id = _item_id;
END IF;