【发布时间】:2015-03-29 19:23:02
【问题描述】:
我正在尝试做一个存储过程,我正在给员工加薪,但我似乎不明白我做错了什么,它给了我以下错误
消息 8115,第 16 级,状态 8,程序 ClerkPayRise,第 8 行
将数值转换为数值数据类型时出现算术溢出错误。
我的存储过程的代码是:
CREATE PROCEDURE ClerkPayRise (@clerkID VARCHAR (50),
@clerkPayrate DECIMAL(3, 2))
AS
BEGIN
UPDATE clerks
SET clerkPayrate = clerkPayrate + @clerkPayrate
WHERE clerkID = @clerkID
IF @@ROWCOUNT = 1
SELECT 'The Hourly Pay Rise for Clerk: ' + (SELECT clerkFName + ' ' + clerkSName
FROM clerks
WHERE clerkID = @clerkID) + 'Was Successful'
ELSE
SELECT ' The Increase in Hourely Pay rate Failed, No Clerk with ID ; ' + CAST(@clerkID AS VARCHAR (50))
END
EXECUTE ClerkPayRise
clerk01,
0.25
GO
DROP PROCEDURE ClerkPayRise
我使用的样本数据如下:
CREATE TABLE clerks
(
clerkID VARCHAR (20) NOT NULL,
clerkFName VARCHAR (20),
clerkSName VARCHAR (20),
clerkPayrate DECIMAL(3, 2),
PRIMARY KEY (clerkID),
);
INSERT INTO clerks
VALUES ('clerk01' ,'Alex','Richards',7.49);
INSERT INTO clerks
VALUES ('clerk02', 'Jason','Elliot',8.25);
INSERT INTO clerks
VALUES ('clerk03', 'Mark','Alleyne',8.25);
INSERT INTO clerks
VALUES ('clerk04', 'Ricky','Ponting',8.00);
INSERT INTO clerks
VALUES ('clerk05', 'Nick','Lamb',8.75);
我将不胜感激任何指导和帮助
【问题讨论】:
-
为我工作(一旦我在
clerks表中添加“角色”列)并返回“文员每小时加薪:亚历克斯理查兹成功”。您是否将某人增加到9.99以上? -
您的插入语句具有比列更多的值。请修复该问题。您的解决方案也可以正常工作。尽管您可以在此处找到有关您的错误的更多详细信息:sql-server-helper.com/error-messages/…
-
嗨,马丁,我已经编辑了表格并插入了语句,请看一下,我只想给员工加薪 0.25 美分,只希望更新职员工资率列
标签: sql-server sql-server-2008 stored-procedures sql-server-2012