逐个表查询数据,查询到数据就直接返回。
如下例子:
依次从 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>