ITPub博客

首页 > Linux操作系统 > Linux操作系统 > mysql 存储过程 触发器(3) 游标的使用

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

原创 Linux操作系统 作者:sieper 时间:2009-12-03 16:22:50 0 删除 编辑

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

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

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博客 ” ,链接:https://blog.itpub.net/11813230/viewspace-621582/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-17

  • 博文量
    87
  • 访问量
    210539