站点图标 IDC铺

关于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 _ben
退出移动版