MySQL 替换 exec sp_executesql 函数

MySQL存储过程执行动态 SQL,并获取结果

1、说明

 
        在MySQL 存储过程中,时常要动态拼接并执行 sql ,并将执行的sql结果作为条件等。
        最近在做 SQL Server 转 MySQL 数据库时,调整 SQL Server 数据库存储过程时,发现了 exec sp_executesql 函数 ,该文也可以作为 MySQL 替换 SQL Server 中 exec sp_executesql 函数的参考示例。
 
        附上一篇讲 sp_executesql 函数不错的博文:《 sp_executesql 介绍和使用》.

 

2、示例

 
条件表数据 :
在这里插入图片描述
 
示例脚本 :
 


delimiter //
CREATE PROCEDURE test_pro()
BEGIN
    DECLARE creatSql VARCHAR(2000);
    DECLARE cr VARCHAR(2000);
    # 这里将 sql 查询结果放在会话变量 @sName 中,如需要获取则必须放在会话变量中。		
    set creatSql = 'SELECT stu_name into @sName from t_users where id = 1;';
    set @dynamicSq = creatSql;
    # 预编译动态sql, 该地方必须使用 from @dynamicSq, 如直接使用 from creatSql 报错。
    PREPARE sqa from @dynamicSq;
      # 执行动态 sql
      EXECUTE sqa ;
      # 删除预编译的 sql
      DEALLOCATE PREPARE sqa;
    # 获取执行动态sql的结果
    SET cr = @sName;
	   if (cr = '张三') THEN 
		   SELECT '成功!' AS '结果';
	   end IF ; 
END //
delimiter ;  

 
执行结果 :

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值