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;
上一篇:在ORACLE存储过程中创建临时表


下一篇:Oracle:如何创建一个只有查看权限的用户