在存儲過程中可以使用臨時表,下面有一個分割字符串的例子
語法
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
