MYSQL存储过程中变量做sql字段用

在编辑mysql存储过程的时候,有时候需要将变量当做一个字段加到查询或者更新中去。这时候运用正常的查询语句是没法执行的。因为变量最后是当做字符串输出,在存储过程中字符串无法当做sql语句的字段使用。
这时候需要定义一个变量,配合PREPARE,EXECUTE来使用.这种方法可以用到PROCEDURE过程中,没法用到函数中.

例子如下:
	想要统计某些工作岗位的人数。但是目标表的岗位是横向展示的:

用户表 tmp_user

id名字公司岗位
1A君A分公司财务
2B君B分公司销售
3C君A分公司财务

目标表 tmp_ob

分公司财务销售
A分公司
B分公司
BEGIN
	declare li_id int default 0;
	declare li_job varchar(100) default '';
	declare li_company varchar(100) default '';

declare done int default false;
declare cur cursor for select id from tmp_user;

declare continue HANDLER for not found set done = true;	
	

	open cur;
	read_loop:loop
		fetch cur into li_id;
		if done then
			leave read_loop;	
		end if; 
					
			select 岗位,公司 into li_job,li_company from tmp_user a	where a.id = li_id;
			
			set @s = CONCAT("update tmp_ob set ",li_job,"=",li_job,"+1 where 分公司=",li_company );
				
				PREPARE stmt FROM @s;
				EXECUTE stmt;

	end loop;
	close cur;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值