-1

如果用户不选择值或在用户选择值时设置新值,我如何将列值设置为 null

create procedure update2
 @SSN int,
 @Employee_FirstName varchar(50),
 @Employee_lastName varchar(50),
 @gender_ID int,
 @Department_ID int,
 @location_ID int,
 @salary decimal(18, 3)

as

Update Employee set Employee_FirstName= @Employee_FirstName,
Employee_lastName=@Employee_lastName,gender=@gender_ID,Department_ID = @Department_ID,
location_ID=@location_ID or location_ID is null  , salary=@salary
where SSN = @SSN
4

3 回答 3

0

您可以将 @location_ID 声明为 null

CREATE PROCEDURE update2
@SSN INT ,
@Employee_FirstName VARCHAR(50) ,
@Employee_lastName VARCHAR(50) ,
@gender_ID INT ,
@Department_ID INT ,
@location_ID INT = NULL ,
@salary DECIMAL(18, 3)

AS 

UPDATE  Employee
SET     Employee_FirstName = @Employee_FirstName ,
        Employee_lastName = @Employee_lastName ,
        gender = @gender_ID ,
        Department_ID = @Department_ID ,
        location_ID = @location_ID ,
        salary = @salary
WHERE   SSN = @SSN
于 2013-06-12T06:49:59.170 回答
0

试试这个,如果我正确理解了你的问题 -

CREATE PROCEDURE dbo.update2 

    @SSN INT,
    @Employee_FirstName VARCHAR(50),
    @Employee_lastName VARCHAR(50),
    @gender_ID INT,
    @Department_ID INT,
    @location_ID INT,
    @salary DECIMAL(18, 3)

AS BEGIN

    UPDATE dbo.Employee
    SET 
          Employee_FirstName = @Employee_FirstName
        , Employee_lastName = @Employee_lastName
        , gender = @gender_ID
        , Department_ID = @Department_ID
        , location_ID = ISNULL(location_ID, @location_ID) --<-- ?? 
        , salary = @salary
    WHERE SSN = @SSN

END 
于 2013-06-12T07:30:19.377 回答
0

@location_ID INT = NULL -- 在任何需要的地方指定 NULL

但是您必须删除与此特定列的任何关系(外键),否则您将在更新时发生冲突错误

谢谢阿伦安东尼

于 2013-06-12T10:58:56.313 回答