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

文章讲述了在MySQL存储过程中如何使用变量作为查询或更新的字段。由于变量被当作字符串处理,不能直接用于SQL语句,因此需要利用PREPARE和EXECUTE语句来动态构建并执行SQL。文中提供了一个示例,展示了如何统计各工作岗位人数,通过遍历用户表,动态更新目标表的岗位计数。
摘要由CSDN通过智能技术生成
在编辑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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值