存储过程执行动态拼接sql

CREATE  PROCEDURE getData(IN itemName varchar(100),IN year VARCHAR(50),IN org VARCHAR(100),OUT bal VARCHAR(100))
BEGIN
  DECLARE itemKey VARCHAR(100) DEFAULT null;
  SET @ret = 0; -- 初始化去除缓存
    SELECT DISTINCT item_key into itemKey FROM sys_item where item_name=itemName;
    if (itemKey is not null) then
        SET @sql_stmt = CONCAT('SELECT ifnull(sum(wd.',itemKey,'),0) into @ret FROM    sys_data wd INNER JOIN sys_orginfo so on wd.fk_org_id=so.id WHERE 1=1 ');
        if (year is not null) then
            SET @sql_stmt=CONCAT(@sql_stmt,' and wd.year=''',year,'''');
        end if;
        if (org is not null) then
            SET @sql_stmt=CONCAT(@sql_stmt,' and so.org_name=''',org,'''');
        end if;
        SET @sql_stmt = CONCAT(@sql_stmt,' GROUP BY wd.year');
        PREPARE stmt FROM @sql_stmt;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    end if;
    set bal=@ret;
END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值