1. 程式人生 > >mysql儲存過程例子cursor

mysql儲存過程例子cursor

CREATE DEFINER = 'test'@'%'
PROCEDURE DB.mv_parentsToContact()
begin
declare custid bigint(20);
declare name1 varchar(50);
declare mobile1 varchar(20);
declare name2 varchar(50);
declare mobile2 varchar(20);
  declare tempStr varchar(200);
  DECLARE done INT DEFAULT FALSE;


DECLARE cur1 CURSOR FOR
select id from p2p_customer t1 where 
not exists (
select t2.CUST_ID from p2p_cust_top_contactor t2 where t2.CUST_ID=t1.id limit 0,1
)
and   exists (
select t3.CUST_ID from p2p_cust_addr_list t3 where t3.CUST_ID=t1.id limit 0,1
)  order by id asc;


DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
open cur1;
custIDs_Loop:LOOP  
fetch cur1 into custid;


    IF done THEN
      set done=FALSE;
      LEAVE custIDs_Loop;
    END IF;
  


select t.MOBILE,t.COMPANY_NAME into name1,mobile1 from p2p_customer_contactor t where t.CUST_ID=custid
and t.CONNECT_TYPE='FATHER' and DEL_FLAG='N';
    
   IF done THEN 
     set done=FALSE;
     ITERATE custIDs_Loop;    
   END IF;


select t.MOBILE,t.COMPANY_NAME into name2,mobile2 from p2p_customer_contactor t where t.CUST_ID=custid
and t.CONNECT_TYPE='MOTHER' and DEL_FLAG='N';


    IF done THEN
      set done=FALSE; 
     ITERATE custIDs_Loop;    
   END IF;


if name1 is not null and mobile1 is not null and name2 is not null and mobile2 is not null THEN
if name1 !='' and mobile1 !=''  and name2 !=''  and mobile2 !=''  THEN

            insert into p2p_cust_top_contactor ( CUST_ID, CON_NAME, MOBILE, RELATION_TYPE, CREATE_TIME, UPDATE_TIME ) 
values ( custid, name1, mobile1, 'parents', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP );
insert into p2p_cust_top_contactor ( CUST_ID, CON_NAME, MOBILE, RELATION_TYPE, CREATE_TIME, UPDATE_TIME ) 
values ( custid, name2, mobile2, 'parents', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP );
COMMIT;
END IF;
END IF;
    

END LOOP custIDs_Loop; 
close cur1;


end

相關推薦

mysql儲存過程例子cursor

CREATE DEFINER = 'test'@'%' PROCEDURE DB.mv_parentsToContact() begindeclare custid bigint(20);declare name1 varchar(50);declare mobile1 v

MYSQL儲存過程迴圈CURSOR(遊標)使用

遊標概述 概括來說,遊標是一種臨時的資料庫物件,即用來存放一個表中所有資訊或者表中的一部分資料資訊(副本)。遊標也可以用來指向資料的某一行,可以充當資料庫中的行指標。 最常見用途就是儲存查詢結果,便於後面使用,遊標中的結果集都是有select語句產生的(臨時的資料庫物件)。

phpMyAdmin呼叫和生成MySQL儲存過程以及CURSOR的應用

 首先敘述一下我碰到的問題,如果這個講不清楚,則有可能壓根不知道這究竟有什麼用,有些事情總是在碰到困難需要解決非用不可的時候印象才會更深刻。 這是一個轉換工程,需要把dvbbs的access資料庫轉換成phpwind的mysql形式。 phpwind論壇資料庫, 表

MySQL儲存過程遊標(cursor)示例

Mysql建立儲存過程,使用遊標Cursor迴圈更新 使用遊標(cursor) 1.宣告遊標 DECLARE cursor_name CURSOR FOR select_statement 這個語句

Mysql儲存過程中使用cursor

一、表 學生表 CREATE TABLE `t_student` (    `stuNum` int(11) NOT NULL auto_increment,    `stuName` varchar(20) default NULL,    `birthday` date default NULL,    

mysql多個遊標儲存過程例子

功能:從personinfo 和 employee表中得到各自主鍵成為personConnect表的主鍵插入 CREATE PROCEDURE insertPersonConnet() begin      declare personConnetId varchar(20

MySql儲存過程—7、遊標(Cursor)

1、遊標的作用及屬性 遊標的作用就是用於對查詢資料庫所返回的記錄進行遍歷,以便進行相應的操作;遊標有下面這些屬性:     a、遊標是隻讀的,也就是不能更新它;     b、遊標是不能滾動的,也就是隻能在一個方向上進行遍歷,不能在記錄之間隨意進退,不能跳過某些記錄;    

Mysql儲存過程8:repeat循環

local cal 其他 host ted query code class pan 語法: repeat SQL until 條件 end repeat; 就是相當於其他語言中的: do{ # }while(); mys

Mysql儲存過程4:mysql變量設置

from 默認 pan procedure weight use mysql變量 sql 寫法 默認全局變量是兩個@@開頭, 可用show variables查看所有默認變量: @@user #declare定義變量只能用在儲存過程中 #declare 變量名 數據類型

Mysql儲存過程3:if語句

sql語句 inpu arguments ted div mysql then for clas --if/else語句 if 條件 then SQL語句 else SQL語句elseifSQL語句 end if; create procedure test1( n

Mysql儲存過程2:變量定義與參數傳遞

變量定義 color ted lec mysq 傳遞 參數傳遞 fault 可選 #儲存過程 中的變量定義 declare 變量名 類型 可選類型 -- 跟建表差不多 create procedure p() begin declare age int de

MySQL 儲存過程-原理、語法、函數詳細說明

exp sql 十六進制 作用範圍 安全機制 系統管理員 rtrim 編程 xtra Mysql儲存過程是一組為了完成特定功能的SQL語句集,經過編譯之後存儲在數據庫中,當需要使用該組SQL語句時用戶只需要通過指定儲存過程的名字並給定參數就可以調用執行它了,簡而言之就是一組

MySQL儲存過程

date 算數運算 else 使用 not 流程控制語句 posit 表達 gin 儲存過程 本文章原創,轉載需註明出處. 前提: 在大型數據庫中 來源: 為了完成特定功能的SQL語句集 定義: 儲存在數據庫中, 用戶通過指定儲存過程的名字並給出參數(帶有參數的)來執

MySQL儲存過程和函式的區別與優缺點

為什麼要使用儲存過程和函式 資料庫物件儲存過程和函式,是用來實現一組關於表操作的SQL語句程式碼當做一個整體來執行。一個完整的操作會包含多條SQL語句,在執行過程中需要根據前面的SQL語句來執行結果有選擇的執行後面的SQL語句。 儲存過程和函式可以簡單的理解為一條或多條SQL語句的集合

spring data jpa 如何呼叫mysql儲存過程

  A:首先定義儲存過程依賴的jpa表:     @Entity     @Table(name="evenmngt_childthingtree_tmp")//資料庫中的表名     @Name

mysql儲存過程迴圈 while/repeat/loop

先把語句結束符設定成// mysql> DELIMITER // while 條件 do … end while mysql> create procedure proce_while() -> begin -> de

mysql儲存過程引數輸入輸出IN/OUT/INOUT

mysql儲存過程中,IN用來輸入引數,OUT用來輸出引數,INOUT輸入和輸出。 IN引數 建立儲存過程 mysql> delimiter // mysql> create procedure proce1(IN count int) ->

mysql 儲存過程示例

在mysql的test庫中執行如下sql: -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREAT

mysql儲存過程舉例:100以內的整數除以2、4、6、8的結果,相加等於多少

學習儲存過程:首先知道它是幹嘛的,  概念:將一組sql語句,完成一個特定的功能,稱之為儲存過程, 寫儲存過程:只能建立、替換、刪除 DROP PROCEDURE IF EXISTS sum; -- procedure 存在則先刪除 create procedure `su

mysql儲存過程遊標檢視select結果集

mysql中使用select(或者使用print未嘗試)檢視引數 DELIMITER $ create PROCEDURE myPro() BEGIN    DECLARE  id varchar(64);   -- id     DE