mysql 存储过程执行多条sql_MySQL - 存储过程动态执行 sql

本文介绍了如何在MySQL中创建存储过程来动态执行SQL语句,特别是涉及临时表、游标和动态查询的情况。示例包括创建临时表、更新或插入数据以及从数据表导出文件的操作。
摘要由CSDN通过智能技术生成

存储过程动态执行 sql

--存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数

create procedure p_procedurecode(in sumdate varchar(10))

begin

declare v_sql varchar(500); --需要执行的SQL语句

declare sym varchar(6);

declare var1 varchar(20);

declare var2 varchar(70);

declare var3 integer;

--定义游标遍历时,作为判断是否遍历完全部记录的标记

declare no_more_departments integer DEFAULT 0;

--定义游标名字为C_RESULT

DECLARE C_RESULT CURSOR FOR

SELECT barcode,barname,barnum FROM tmp_table;

--声明当游标遍历完全部记录后将标志变量置成某个值

DECLARE CONTINUE HANDLER FOR NOT FOUND

SET no_more_departments=1;

set sym=substring(sumdate,1,6); --截取字符串,并将其赋值给一个遍历

--连接字符串构成完整SQL语句,动态SQL执行后的结果记录集,在MySQL中无法获取,因此需要转变思路将其放置到一个临时表中(注意代码中的写法)。一般写法如下:

-- 'Create TEMPORARY Table 表名(Select的查询语句);

set v_sql=

存储过程执行多条动态SQL的步骤如下: 1. 首先,需要定义一个变量来存储动态SQL语句。可以使用CONCAT函数将多个字符串连接起来,形成完整的SQL语句。例如,使用引用\[2\]中的代码,可以将多个字段的值拼接成一个完整的INSERT语句。 2. 接下来,需要定义一个变量来存储INSERT语句的开头部分。可以使用引用\[3\]中的代码,将INSERT INTO语句的开头部分赋值给该变量。 3. 然后,可以使用循环或者其他方式来遍历需要执行动态SQL语句。在每次循环中,将需要插入的数据拼接到动态SQL语句中。可以使用引用\[2\]中的代码,将每个字段的值拼接到INSERT语句中。 4. 最后,执行动态SQL语句。可以使用EXECUTE语句来执行动态SQL语句。在存储过程中,可以使用循环或者其他方式来执行多条动态SQL语句。 总结起来,存储过程执行多条动态SQL的步骤包括定义变量存储动态SQL语句、定义变量存储INSERT语句的开头部分、遍历需要执行动态SQL语句并拼接数据、执行动态SQL语句。 #### 引用[.reference_title] - *1* [一个mysql存储过程,可以动态执行sql](https://blog.csdn.net/shi_yi_fei/article/details/122755134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MySQL 存储过程执行动态拼接SQL](https://blog.csdn.net/weixin_39699121/article/details/113261495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值