我在SQL中有一个关于存储过程的任务,我很难理解这个问题。所以我想不出解决办法。
问题是:
编写一个名为AddJobService
的存储过程,它将接受JobNumber
、ServiceCode
、注释和小时,并将执行以下任务:(8个标记)
a.如果没有JobNumber
的工作记录,则发出适当的消息
b.如果有相关的工作记录,添加一个JobService
记录
c.调整作业表中的相应列
这就是我目前所做的:
create procedure AddJobService (@JobNumber int = null, @ServiceCode varchar(15) = null, @Notes varchar(200) = null, @Hours int = null)
as
if @JobNumber is null
Begin
RaisError ('Please provide information', 16,1)
End
else
if not exists(Select * from Job where JobNumber = @JobNumber)
Begin
RaisError (' Job Record Do not Exists ', 16,1)
End
else
begin
Begin Transaction
insert into JobService(ServiceCode, Notes, Hours)
Values ( @ServiceCode, @Notes, @Hours)
if @@ERROR <> 0
Begin
RaisError('Job Service Failed',16,1)
Rollback Transaction
End
End
我发现了这个错误
"
我真的不能做C部分?我得到的是“无法将值NULL插入列“ExtCost”,表“LAB3.dbo.JobService”;列不允许为NULL。插入失败。声明已终止。“
最佳答案
尽管您不必在答案中显示ExtCost
,但是当您将记录插入表JobService
时,您需要输入ExtCost
。
如果您可以修改JobService
表方案,只需将ExtCost
更改为nullable
,否则您需要为ExtCost
提供一个值,可能是'0'
insert into JobService(ServiceCode, Notes, Hours, ExtCost)
Values ( @ServiceCode, @Notes, @Hours, 0)