我在SQL中有一个关于存储过程的任务,我很难理解这个问题。所以我想不出解决办法。
问题是:
编写一个名为AddJobService的存储过程,它将接受JobNumberServiceCode、注释和小时,并将执行以下任务:(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)

10-08 05:14