Я пытаюсь написать процедуру, которая возвращает значения на основе результата запроса select. Например, найти идентификатор пользователя, использовать имя и фамилию, чтобы найти идентификатор пользователя, и вернуть идентификатор в качестве параметра OUTPUT. Если найдено более одного пользователя или нет, установите значение возврата -1 и установите для параметра OUTPUT значение 0.
Я попробовал следующий код, но получаю сообщение об ошибке:
Необходимо объявить скалярную переменную "@intValue"
Я искал по интернету, но никто не решил мою проблему.
CREATE PROCEDURE GetIdOfUser
(@f_name VARCHAR(50),
@l_name VARCHAR(50),
@outValue INT OUTPUT)
AS
DECLARE @intValue INT;
SELECT @intValue = userID
FROM users
WHERE firstName = @f_name AND lastName = @l_name
IF @@rowcount > 1 -- more than one user?
BEGIN
SET @outValue = 0
RETURN -1;
END
IF @@rowcount == 1
BEGIN
SET @outValue = @intValue;
END
DECLARE @myretValue INT;
EXEC GetIdOfUser 'raj', 'ahuja', @myretValue;
SELECT @myretValue;
Я использую SQLfiddle [sqlfiddle.com] для изучения концепций SQL Server. Я совершенно новичок в создании процедур в SQL Server, поэтому любая помощь будет принята.
РЕДАКТИРОВАТЬ 1: Версия SQL Server 2017
РЕДАКТИРОВАТЬ 2: Схема и примеры данных, с которыми я работаю.
create table users
(
userID int,
firstName varchar(50),
lastName varchar(50),
title varchar(50)
);
insert into users(userID, firstName, lastName, title)
values(501, 'natasha', 'ghosh', 'title1'),
(502, 'raj', 'ahuja', 'title2'),
(503, 'katy', 'perry', 'title3'),
(504, 'john', 'cyrus', 'title4'),
(505, 'anindita', 'pal', 'title5');