小哈 ^__^
。。。珍惜生命。。。 。。。熱愛生活。。。 。。。快樂每天。。。 。。。幸福相伴。。。
posts - 152,  comments - 161,  trackbacks - 0

DELIMITER $$

DROP PROCEDURE IF EXISTS `testdb`.`code` $$
CREATE PROCEDURE `code`(in sno char(10))
BEGIN
  DECLARE done INT DEFAULT 0;
  declare inta,seq0,qseq int;
  declare flag char(1);

  declare curseq cursor for select seq from sto_iproduces where pslipno =sno;
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

  set inta=0,qseq=1,seq0=0,flag='0';

  open    curseq;
  fetch   curseq into seq0;
  while done=0 do
        set inta=inta+1;
        set flag='2';

        if seq0<>inta then
           set qseq=inta;
           set flag='1';
           set done=1;
       end if;
  fetch   curseq into seq0;
  end while;

  close curseq;

if flag='2'  then
  set qseq=inta+1;
end if;
   select qseq;
END $$

DELIMITER ;
注:1.pslipno的參數為sno,可別定義與pslipno相同,或者資料表中的欄位名同名
      2.seq為欄位名,其變數為seq0若設為一樣則沒有值
      3.此範例應用於:資料表有slipno+seq為主KEY,要找seq所缺號

posted on 2007-05-19 12:01 小哈 阅读(98) 评论(2)  编辑 收藏 所属分类: MySql+Access+MsSql

FeedBack:
2007-08-30 16:11 | atal163 [未注册用户]
fetch curseq into seq0;
while done=0 do
set inta=inta+1;
set flag='2';

if seq0<>inta then
set qseq=inta;
set flag='1';
set done=1;
end if;
fetch curseq into seq0;
end while;
-----------------------改为下面的应该更好些----↓
repeat
fetch curseq into seq0;
if not done then
set inta = inta+1;



end if ;
until done end repeat;

  回复  引用    
#2楼 [楼主]
2007-08-31 08:10 | 小哈      
@atal163
謝謝你的建議,改天試試
  回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-05-19 14:45 编辑过
 
 


2007~2009
新起點,新目標,新希望

努力學習,每天向上
為夢想+U

中国队,加油!!! 8-9 22:49

搜索

 

常用链接

留言簿(12)

随笔分类

积分与排名

  • 积分 - 32076
  • 排名 - 1253

最新评论

60天内阅读排行