1. 程式人生 > >mysql 儲存過程動態拼接sql並執行賦值

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;