IF判断的存储过程

逐个表查询数据,查询到数据就直接返回。
如下例子:

依次从 table1、table2、table3 三个表中查询数据,resultCount 默认值为0,把每次查询结果的行数复制给 resultCount,根据条件 IF @resultCount=0 THEN终止还是继续。
临时表主要用来过渡数据,返回查询结果

执行SQL

DELIMITER //
drop procedure if exists p_bovms_bills_get_vouchermessage;
CREATE DEFINER = `peng`@`%` PROCEDURE `p_bovms_bills_get_vouchermessage`(_ent_id bigint, _pzId varchar(80))
BEGIN
/*-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
功能描述: 
详细描述:
参数说明:

创建时间:2018-02-09, peng
最后修改时间:2018-02-09, peng
修改说明:
调用例子:
call p_bovms_bills_get_vouchermessage(1, "f0441e0f-e2f2-4509-84cd-06dde59b4cd5");
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
    set @ent_id = _ent_id,@pzId = _pzId;
    set @resultCount = 0;
  create TEMPORARY table if not exists temp_resultCount(
    ent_id bigint
        ,bill_type_id int(11)
    ,vt_num_list varchar(100)
    ,vch_id_list varchar(500)
  )ENGINE=myisam;

IF @resultCount=0 THEN
  insert into temp_resultCount(ent_id,bill_type_id,vt_num_list,vch_id_list)
    SELECT ent_id,bill_type_id,vt_num_list,vch_id_list FROM
        table1
    WHERE vm_state = "2" AND ent_id = @ent_id AND vch_id_list LIKE CONCAT('%',@pzId,'%');
  select count(1) into @resultCount from temp_resultCount;
END IF;

IF @resultCount=0 THEN
  insert into temp_resultCount(ent_id,bill_type_id,vt_num_list,vch_id_list)
    SELECT ent_id,bill_type_id,vt_num_list,vch_id_list FROM
        table2 
    WHERE vm_state = "2" AND ent_id = @ent_id AND vch_id_list LIKE CONCAT('%',@pzId,'%');
  select count(1) into @resultCount from temp_resultCount;
END IF;

IF @resultCount=0 THEN
  insert into temp_resultCount(ent_id,bill_type_id,vt_num_list,vch_id_list)
    SELECT ent_id,bill_type_id,vt_num_list,vch_id_list FROM
        table3 
    WHERE vm_state = "2" AND ent_id = @ent_id AND vch_id_list LIKE CONCAT('%',@pzId,'%');
  select count(1) into @resultCount from temp_resultCount;
END IF;

  select * from temp_resultCount;
  drop TEMPORARY table if exists temp_resultCount; 
END
//
DELIMITER ;

${param}传递的参数会被当成sql语句中的一部分,比如传递表名,字段名
#{parm}传入的数据都当成一个字符串,会对自动传入的数据加一个双引号

<update id="updateVoucherPzZh">
    UPDATE ${tableName}
    SET vt_num_list = #{vt_num_list}
    WHERE
        vm_state = "2"
    AND ent_id = #{ent_id}
    AND vch_id_list = #{vch_id_list};
</update>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值