SQL Server更新?

SQL Server更新?,sql,sql-server,Sql,Sql Server,我有一个包含以下列的表: CID ContractNumber ContractName CompanyID 1 N/200 TAS 13 2 N/201 TAA 1 更新此表的存储过程 @id as int @cnum as nvarchar(50) @cname as nvarchar (50) @cp as int u

我有一个包含以下列的表:

CID   ContractNumber   ContractName    CompanyID  
1     N/200            TAS               13
2     N/201            TAA               1
更新此表的存储过程

    @id as int 
    @cnum as nvarchar(50)
    @cname as nvarchar (50)
    @cp as int 

update contracts 
set ContractNumber = @cnum,
    ContractName = @cname,
    CompanyID  = @cp ,
where 
    CID = @id

当我仅在
contractnumber
列中更新时,不会提供输出
@cname
,更新查询将终止。

我猜您对
ContractName
非空
约束。如果不提供名称,则会违反约束

要解决此问题,请安排
更新
,以便在新值为
NULL时保留现有值:

update contracts 
set ContractNumber = coalesce(@cnum, ContractNumber),
    ContractName = coalesce(@cname, ContractName),
    CompanyID = coalesce(@cp, CompanyID)
where CID = @id;

我猜您对
ContractName
notnull
约束。如果不提供名称,则会违反约束

要解决此问题,请安排
更新
,以便在新值为
NULL时保留现有值:

update contracts 
set ContractNumber = coalesce(@cnum, ContractNumber),
    ContractName = coalesce(@cname, ContractName),
    CompanyID = coalesce(@cp, CompanyID)
where CID = @id;

您应该编辑问题并显示错误消息。另外,
create table
语句可能会有所帮助。如果您说参数有时可能为空,请使用isnull()或coalseceprocesdure或函数“edit”或未提供的“@cname”,您应该编辑问题并显示错误消息。另外,
create table
语句可能会有所帮助。如果您说参数有时可能为空,请使用isnull()或coalseceprodure或未提供的函数“edit”expect“@cname”