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

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;

原文地址:https://www.cnblogs.com/pejsidney/p/10252660.html

时间: 2024-11-08 19:28:27

mysql 存储过程动态拼接sql并执行赋值的相关文章

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S

mysql存储过程动态执行SQL

CREATE PROCEDURE feeMonth(in fmark varchar(200),in fuser char(32),in ftime BIGINT,in fmonth char(6)) BEGIN #定义SQL变量 declare create_sql varchar(100); declare sel_sql varchar(100); declare del_sql varchar(100); declare fmon varchar(100); #定义表名变量 declar

java动态拼接sql语句并且执行时给sql语句的参数赋值

问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 1.就拿我上面的那个多条件模糊查询为例,第一步是拼接sql语句,先定义一个通用的sql语句,String sql = "select * from user where 1 = 1 ";这里添加where 1= 1是一个小技巧,方便后面sql语句的拼接. String sql = &quo

动态拼接SQL计算公式

1 --模拟数据 2 IF OBJECT_ID('tempdb..#t')>0 DROP TABLE #t 3 SELECT * INTO #t 4 FROM ( 5 SELECT '1' id,2030 g,265 h, 830 k,'g*h+h*k' gs,0 tt 6 UNION ALL 7 SELECT '2' id,2030 g,0 h, 0 k,'g*4' gs,0 tt 8 UNION ALL 9 SELECT '3' id,2030 g,265 h, 0 k,'(g+h)*2'

mybatis-使用if动态拼接sql

一.创建项目和数据库    项目名称:mybatis092901    数据库名称:mybatis0929        表名称:dept        CREATE TABLE `dept` (          `deptNo` int(11) NOT NULL,          `deptName` varchar(30) DEFAULT NULL,          `location` varchar(30) DEFAULT NULL,          PRIMARY KEY (`

MSSQL存储过程实现拼接sql的注意点

这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改.由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面. 这里就出现了一个问题,我花费了好久才弄通! 其实就是很简单的一个SQL语句: update table1 set field1=value1,field2 = value2 where id = id 我写成什么样子了呢?大家且看: declare @tableName nvarchar(50), @field1 int, @

mysql动态拼接sql语句

begin /**procedure body**/if(m_parameter='') thenset @sqlStr=concat('select id,title,description,msg,logo,notice,views,grade,commenttimes from kmb01',' order by ',m_sort,' ',m_sortType,' limit ',m_index,',',m_length); elseset @sqlStr=concat('select i

MySql存储过程动态创建表并插入数据

最近做的一个项目,数据库用的是MySql,对于MySql不是很熟练,只是会简单的应用,毕竟简单的sql语句还是相通的,但是随着项目的深入复杂的sql语句开始慢慢多起来,其中一个小难点就是要根据当天的日期动态创建表,并且向其中插入数据. 具体逻辑可以理解为,先去数据库查询有没有当天的记录表,如果没有则创建表,然后执行当天的日志写入. Mysql的可视化工具我们用的是navicat,相对来说还是比较好用,当然没有sqlserver 那么人性化(很多快捷键不支持,操作累赘).下面我就来说一说用navi

动态拼接SQL语句

1.参考官方文档 ? if:字符判断 ? choose (when, otherwise):分支选择 ? trim (where, set):字符串截取:其中where标签封装查询条件,set标签封装修改条件 ? foreach 2.if案例 1)在EmployeeMapper接口中添加一个方法: //携带了哪个字段,查询条件就带上哪个字段的值 public List<Employee> getEmployeeByConditionIf(Employee employee); 2).如果要写下