日期:2014-05-17  浏览次数:20549 次

新手求教一个存储过程
新手求教各位高手一个存储过程:
    一个工资表,三个字段:ID,Name,Price;现在要给所有人加工资,每次加100元,加到大于等于6000就不加了;同时如果半数以上的人的工资都加到6000或以上,那么所有的人都不在增加工资。
求高手给予帮助,谢谢!

------解决方案--------------------
CREATE TABLE Table_A
(
ID VARCHAR(20),
[NAME] VARCHAR(20),
Price NUMERIC(18,2)
)
INSERT INTO Table_A(ID,[NAME],Price)
SELECT '0001','张三',4000
union all
SELECT '0002','李四',5900
union all
SELECT '0003','王二',6000
union all
SELECT '0004','麻子',6500
union all
SELECT '0005','温某',4800



CREATE PROC PROC_A
AS
BEGIN
declare @mCount int

SELECT @mCount = COUNT(1) FROM Table_A
 WHERE Price >= 6000

IF @mCount > CONVERT(numeric(18,1),(CONVERT(numeric(18,1),(SELECT COUNT(1) FROM Table_A))/2.0))
BEGIN
Return -2 /*提示'半数以上的人的工资都加到6000或以上'*/
END

UPDATE Table_A
   SET  Price = IsNull(Price,0.00) + 100
 WHERE Price < 6000
END

/*执行存储过程*/
EXEC PROC_A

ID                   NAME                 Price
-------------------- -------------------- ---------------------------------------
0001                 张三                   4100.00
0002                 李四                   6000.00
0003                 王二                   6000.00
0004                 麻子                   6500.00