У меня есть хранимая процедура, в которой я проверяю, существует ли имя пользователя, и если оно не существует, добавьте в таблицу пользователя, затем получите идентификатор пользователя для того же имени пользователя. Я пытался использовать выходную переменную, чтобы получить идентификатор пользователя. Я собираюсь сделать это неправильно?Могу ли я использовать выходные переменные для получения значения?
alter Procedure Check_User_Name
(
@username varchar(25),
@password varchar(100),
@role_id integer,
@idn nvarchar output
)
As
Begin
IF NOT EXISTS(SELECT [email protected]
FROM [user] WHERE username = @username)
BEGIN
INSERT INTO [user] (username,[password],role_id) VALUES
(@username, @password,@role_id)
--select @idn=idn from [user]
Print 'UserName inserted successfully'
End
Else IF EXISTS(SELECT * FROM [user] WHERE username = @username)
Begin
Print 'UserName already exists'
End
END
я указал размер на @idn переменной, что вам нужно подтвердить. Опуская размер по умолчанию - 30 [SO Ref] (http://stackoverflow.com/questions/1131499/what-is-the-effect-of-omitting-size-in-nvarchar-declaration) – InbetweenWeekends
он работал. в то время как я здесь, как вы можете видеть в моем коде, что он не использует обработку ошибок только для печати заявлений. могу ли я использовать, например, ошибку try, catch или @@? – user2127184
Это зависит от того, что делает остальная часть вашего кода. Я не уверен, что буду беспокоиться об этом, так как вы просто вставляете вставку. Если вставку/выбор не удается, я (лично) просто займусь этим в своем приложении. – InbetweenWeekends