mysql 存储过程动态拼接sql并执行赋值

处理拼接sql并且是在select查询拼接时的赋值:
CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50))
BEGIN
	## 定义变量
	DECLARE _num FLOAT(14,6) DEFAULT 0;
	## @表示全局变量 相当于php $
	## 拼接赋值 INTO 必须要用全局变量不然语句会报错
	SET @strsql = CONCAT('SELECT SUM(',_xnb,') INTO @tnum FROM btc_user_coin');
	## 预处理需要执行的动态SQL,其中stmt是一个变量
	PREPARE stmt FROM @strsql;  
	## 执行SQL语句
	EXECUTE stmt;  
	## 释放掉预处理段
	deallocate prepare stmt;
	## 赋值给定义的变量
	SET _num = @tnum;
	
	SELECT _num

END;;



如果是where 查询 的话,直接就写 不用拼接sql

SELECT SUM(fee) INTO _trade_fee_buy FROM btc_myzr WHERE `coinname`=_xnb AND addtime BETWEEN _beg AND _bend;


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
存储过程执行多条动态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、付费专栏及课程。

余额充值