У меня есть таблица базы данных, к которой я пытаюсь выполнить UPDATE / INSERT с помощью хранимой процедуры.Давайте определим таблицу следующим образом:
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 объявлением по умолчанию в списке параметров?
EDIT:
Цель этого состоит в том, чтобы яне хочу, чтобы параметры NULL переопределяли какие-либо столбцы в выражении UPDATE, если они явно не переданы таким образом.