mysql 存储过程 触发器(3) 游标的使用

存储过程中如何返回数组 。

使用内存临时表实现 一例:

CREATE DEFINER = 'root'@'%' PROCEDURE `pro_delete_NodeDefinition`(in ID Varchar(128))
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
   declare flag  boolean default false;
   Declare  cur_NodeID  Varchar(128);
   declare   done INT DEFAULT 0; 
  declare   sqlres text;
  call recursive_select('node_definition','pkid','super_id',ID,null,'pkid',sqlres);
  set @sql=CONCAT(' insert into coolink_definition_tab  select pkid from node_definition where pkid IN(',sqlres,')');
  drop table  if exists coolink_definition_tab;
  CREATE TEMPORARY TABLE coolink_definition_tab(pkid varchar(256))  TYPE = HEAP;
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;

  begin
        declare  cur   Cursor  for  Select n.pkid From coolink_definition_tab n ;
        declare CONTINUE handler for not found set flag =true;
        Open cur;
        While not flag  do
        Fetch cur Into cur_NodeID;

        delete from node_definition_authorization  where definition_id=cur_NodeID;
        delete from nodedef_processdef  where node_definition =cur_NodeID;
        delete from node_view  where nodefid=cur_NodeID;
        update NODE_DEFINITION set DELETE_MARK='1' , PKID=CONCAT(PKID,now())  where PKID=cur_NodeID;
        End while;
        Close cur;

        DROP TABLE IF EXISTS coolink_definition_tab;
  end;
 commit;
 END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11813230/viewspace-621582/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11813230/viewspace-621582/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值