我有一個數據庫表我試圖做一個UPDATE/INSERT與存儲過程。讓我們來定義,像這樣的表:存儲過程NULL參數
CREATE TABLE Foo
(
Id INT IDENTITY(1, 1),
Name VARCHAR(256) NOT NULL,
ShortName VARCHAR(32),
Sort INT
);
我寫類似下面的存儲過程:
CREATE PROCEDURE Put_Foo
(
@Id INT = NULL OUTPUT,
@Name VARCHAR(256),
@ShortName VARCHAR(32) = NULL,
@Sort INT = NULL
)
AS
BEGIN
SET NOCOUNT ON;
SELECT
@Id = F.Id
FROM
Foo AS F
WHERE
F.Name = @Name;
IF (@Id IS NOT NULL)
BEGIN
UPDATE
Foo
SET
ShortName = @ShortName,
Sort = @Sort
WHERE
Id = @Id;
END
ELSE
BEGIN
INSERT
INTO Foo
(
Name,
ShortName,
Sort
)
VALUES
(
@Name,
@ShortName
@Sort
);
SET @Id = SCOPE_IDENTITY();
END
RETURN;
END;
我已經大大簡化了我處理的數據結構,但我希望這成爲我的點。我的問題是關於如何處理參數。有沒有一種方法可以在程序中確定@Sort是否作爲NULL傳入,或者通過參數列表中的默認聲明設置NULL?
編輯:
這樣做的目的是,我不想NULL參數來覆蓋所有列在UPDATE語句,除非它們被以這種方式明確傳遞。
爲什麼不讓列沒有默認值? – 2011-03-07 21:22:06