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

mysql存储过程游标的一个有关问题

2012-02-14 
mysql存储过程游标的一个问题我想在数据库中查询有无给定条件的记录,如果有就返回FALSE如果无就返回TRUE,

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;

热点排行