У меня есть сохраненная процедура, которая сначала проверяет, существует ли запись, и если она обновляет ее, а затем возвращает идентификатор строки, если она не вставляет новую запись, а затем возвращает идентификатор строки.Сохраненный Proc возвращает 2 значения возврата
При выполнении хранимой процедуры я получаю 2 значения возврата, одно с полем «@PersonID», а другое с «Возвращаемое значение». Я уверен, что это происходит из-за инструкции SELECT, которая используется в IF EXISTS, однако я не могу понять способ ее подавить, и я надеялся, что кто-то сможет помочь.
ALTER PROCEDURE [dbo].[InsertPerson]
-- Add the parameters for the stored procedure here
@FirstName nvarchar(50),
@LastName nvarchar(50),
@PersonID int OUT
AS
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF(EXISTS (SELECT PersonID FROM People
WHERE FirstName = @FirstName AND LastName = @LastName))
BEGIN
SET @PersonID = (SELECT PersonID
FROM People
WHERE FirstName = @FirstName
AND LastName = @LastName)
UPDATE People
SET
FirstName = @FirstName,
LastName = @LastName
WHERE PersonID = @PersonID
END
ELSE
BEGIN
INSERT INTO People (FirstName, LastName) VALUES(@FirstName, @LastName)
SET @PersonID = SCOPE_IDENTITY()
SELECT @PersonID
END
Вы объявили выходной параметр, а также выбор значения - конечно, вам нужно только один или другие ... – Bridge
удалить 'Select @ PersonID' .. процедура имеет выходной параметр @PersonID, и вы уже устанавливаете его. –
Каждая хранимая процедура ВСЕГДА возвращает значение в Return_Value как int. Он предназначен для указания статуса выполнения. –