Как обеспечить правильные возвращаемые значения из хранимой процедуры.
Я создал таблицу под названием "имена" в SQL со следующими 2 столбцами
ID AUTO ID NAME AS nVarchar(MAX)
У меня есть хранимая процедура, чтобы добавить в нее имя, если это имя еще не существует.
CREATE PROCEDURE [dbo].[Ins_NameNew] ( @Name_Input varChar(Max) ) AS BEGIN DECLARE @NameExist INT DECLARE @NameID INT DECLARE @Action NVARCHAR(5) -- Check if the name exists SET @NameExist = CASE WHEN EXISTS (SELECT * FROM [dBName].[dbo].[Names] WHERE Name = @Name_Input ) THEN 1 ELSE 0 END -- Proceed with Insert if doesn't exist IF @NameExist = 0 BEGIN INSERT INTO [dBName].[dbo].[Names] (Name) VALUES (@Name_Input); END -- Get the ID whether Name existed already or just added SET @NameID = (SELECT ID FROM [dBName].[dbo].[Names] WHERE Name = @Name_Input) SET @Action = CASE WHEN @NameExist = 0 THEN 'Added' ELSE 'Exist' END SELECT @NameExist, @NameID, @Action END
Это прекрасно работает, когда дело доходит до добавления нового имени. Но каждый раз он возвращает @NameExist как 1 и @Action как "Exist"
Любые предложения, где я ошибаюсь с сохраненным proc.
Что я уже пробовал:
CREATE PROCEDURE [dbo].[Ins_NameNew] ( @Name_Input varChar(Max) ) AS BEGIN DECLARE @NameExist INT DECLARE @NameID INT DECLARE @Action NVARCHAR(5) -- Check if the name exists SET @NameExist = CASE WHEN EXISTS (SELECT * FROM [dBName].[dbo].[Names] WHERE Name = @Name_Input ) THEN 1 ELSE 0 END -- Proceed with Insert if doesn't exist IF @NameExist = 0 BEGIN INSERT INTO [dBName].[dbo].[Names] (Name) VALUES (@Name_Input); END -- Get the ID whether Name existed already or just added SET @NameID = (SELECT ID FROM [dBName].[dbo].[Names] WHERE Name = @Name_Input) SET @Action = CASE WHEN @NameExist = 0 THEN 'Added' ELSE 'Exist' END SELECT @NameExist, @NameID, @Action END
DinoOnCodeProject
Пожалуйста, извините за грамматические ошибки типа " так как я очень новичок на этом сайте и медленно учусь размещать вопросы. Надеюсь, что этот вопрос не звучит слишком запутанно из-за этого. Я вижу, что он заменяет "с". В следующий раз буду осторожнее.
Заранее спасибо.
DinoOnCodeProject
Спасибо @PIEBALDconsult за то, что поправил меня. :)
Herman<T>.Instance
Подсказка: Вставки