简明现代魔法 -> 数据库技术 -> 一个增加员工工资的数据库存储过程

一个增加员工工资的数据库存储过程

2010-10-18

一个面试问题,写一个SQL语句或者存储过程,给员工加工资,当员工里面有一半的人没有达到6000元的时候,所有员工加100,并打印加了多少工资。

存储过程如下:

--给员工加工资,当员工里面有一半的人没有达到6000元的时候,所有员工加100,并打印加了多少工资
create  table [#t](id int, name char(10),sal int)  --创建临时表
insert into #t 
select 1,'alex',1500 union all
select 2,'kelly',5000 union all
select 3,'lily',10000 union all
select 4,'judy',6000 union all
select 5,'tom',5900 union all
select 6,'cherly',4000 union all
select 7,'cherly',3500 union all
select 8,'romeo',7000 union all
select 9,'frank',5500
select * from #t

go

if Exists(Select name From sysobjects Where name='add_sal' And type='P')
Drop Procedure add_sal
     Go

create proc add_sal
as
begin
set nocount on
declare @count1 float,@count2 int,@up_sal int
set @up_sal=0
set @count1=(select count(*) from #t)
set @count2=(select count(8) from #t where sal<6000)
while(@count2>(@count1/2))
begin
update #t set sal=sal+100 
set @count1=(select count(*) from #t)
set @count2=(select count(8) from #t where sal<6000)
set @up_sal=@up_sal+100
end
print  @up_sal
set nocount off 
end
go

exec add_sal
go

drop table #t

go

这个存储过程的运行结果如下:

id          name       sal         
----------- ---------- ----------- 
1           alex       1500
2           kelly      5000
3           lily       10000
4           judy       6000
5           tom        5900
6           cherly     4000
7           cherly     3500
8           romeo      7000
9           frank      5500

(所影响的行数为 9 行)

500

如果各位有兴趣的话,也可以试试吧6000这个工资改成参数,应该是很简单的。

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们