mysql drop temporary_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作用相似存储过程

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

MySQL中,可以利用存储过程动态地创建并操作临时表。下面将详细介绍如何通过存储过程实现这一功能。 ### 创建带临时表MySQL存储过程 #### 步骤一:定义存储过程 首先需要使用`CREATE PROCEDURE`语法来构建一个新的存储过程,在其中包含生成临时表的操作指令。 示例如下: ```sql DELIMITER $$ -- 更改结束符为$$以便支持分号内嵌于语句块中 CREATE PROCEDURE create_and_use_temp_table() BEGIN CREATE TEMPORARY TABLE temp_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); INSERT INTO temp_table (name) VALUES ('Alice'), ('Bob'); SELECT * FROM temp_table; END$$ DELIMITER ; -- 恢复默认结束符 ``` 上述例子展示了以下几个步骤: 1. **更改分隔符** - 这样可以在存储过程中自由使用分号而不会提前终止命令。 2. **创建存储过程结构** - 定义了一个名为 `create_and_use_temp_table()` 的无参函数。 3. **内部逻辑** - 包含了从创建到插入数据再到查询展示的一系列SQL动作。 4. **恢复标准分隔符** 注意:由于TEMPORARY修饰词的存在,该表仅对当前会话可见,并将在连接关闭时自动销毁。 #### 调用存储过程 完成定义之后,可以用CALL关键字轻松触发此流程: ```sql CALL create_and_use_temp_table(); ``` 这行代码将会运行整个脚本序列——建立temp_table、添加两条记录并且返回结果集给用户查看。 --- ### 使用注意事项 - 确保权限足够高才能够执行DDL(Data Definition Language),如CREATE等敏感操作; - 如果试图再次声明已存在的同名procudure,则需先删除它(drop procedure if exists...)再重建新的版本;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值