mysql存儲過程----臨時表 temporary


在存儲過程中可以使用臨時表,下面有一個分割字符串的例子

語法

1.創建:create temporary table 表名(列信息);

2.刪除:drop table 表名;

  3.清空:truncate table 表名;

注意:

1.在mysql中,臨時表一但建立,銷毀的條件是session中斷,所以為了避免創建過程中出現“table 'XX' already exists”的錯誤,將建表語句改為CREATE TEMPORARY TABLE if not exists 表名(列信息);

2.臨時表只有在用戶退出連接時(session中斷)時,清空數據,不然數據一直累積,若有需求,需要在臨時表使用之后清空臨時表

 

例子

一個和java的spilt作用相似存儲過程

 

在存儲過程中可以使用臨時表,下面有一個分割字符串的例子

語法

1.創建:create temporary table 表名(列信息);

2.刪除:drop table 表名;

  3.清空:truncate table 表名;

注意:

1.在mysql中,臨時表一但建立,銷毀的條件是session中斷,所以為了避免創建過程中出現“table 'XX' already exists”的錯誤,將建表語句改為CREATE TEMPORARY TABLE if not exists 表名(列信息);

2.臨時表只有在用戶退出連接時(session中斷)時,清空數據,不然數據一直累積,若有需求,需要在臨時表使用之后清空臨時表



例子

一個和java的spilt作用相似存儲過程


CREATE DEFINER=`root`@`%` PROCEDURE `str_spilt`(IN `str` varchar(2000))  
BEGIN  
    #分割字符串  
    set @i=0;  
    CREATE TEMPORARY TABLE if not exists str_spilt_result(id BIGINT(20) NOT NULL);   
    truncate table str_spilt_result;  
    SET @cnt = 1+(LENGTH(str) - LENGTH(REPLACE(str,',','')));  
    WHILE @i < @cnt DO  
        SET @i = @i + 1;  
        SET @result = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(str,',',@i)),',',1));  
        INSERT INTO str_spilt_result(id) VALUES (@result);  
    END WHILE;  
    SELECT * from str_spilt_result;  
END  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM