Mysql 存储过程+游标应用

摘自 小哈 博客

 

DELIMITER $$

DROP PROCEDURE IF EXISTS `testdb`.`test` $$
CREATE PROCEDURE `test`(in cprdt1 varchar(30))
BEGIN
  DECLARE done INT DEFAULT 0;
  declare done1 INT DEFAULT 0;
  declare tprdt varchar(200);
  declare prdt1 varchar(30) ;
  declare prdt2 varchar(30);
  declare inta int;

  declare curbom cursor for select prdt from sto_boms where flag='1'  and cprdt =prdt1;
  declare curbom2 cursor for select prdt from sto_boms where flag='1' and cprdt =prdt2;
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1, done1 = 1;

  set tprdt="(";
  set inta=0;
  set prdt1=cprdt1;

  open    curbom;
  fetch   curbom into prdt1;
  while done=0 do
      if prdt1<>"" then
         set tprdt=concat(tprdt,"'",prdt1,"',");
         set prdt2=prdt1;
      end if  ;

      /*open    curbom2;
      fetch   curbom2 into prdt2;
      while done1=0 do
      if prdt2<>"" then
         set tprdt=concat(tprdt,"'",prdt2,"',");
      end if  ;
      fetch   curbom2 into prdt2;
      end while;
      close curbom2;    */

  fetch   curbom into prdt1;
  end while;
  close curbom;

   set tprdt=concat(tprdt,")");
   select tprdt;
END $$

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值