DECLARE @Ctx varbinary(128)
DECLARE @username varchar(30)
SET @Username='ibica'
SELECT @Ctx = CONVERT(varbinary(128), @Username)
SET CONTEXT_INFO @Ctx
SET @username = CONVERT(VarChar(128), CONTEXT_INFO());
PRINT @username
DECLARE @ID_User int
SET @ID_User = ( SELECT Users.ID_User
FROM Users
WHERE Users.Username=@username )
PRINT @ID_User
PRINT @username は正しい値を返すため、context_info を正しく設定していますが、2 回目の印刷で空の行が表示されます。上記の where 句に @username の代わりに値を入力すると、正しい値も出力されます。私は何が欠けていますか?
DECLARE @username varchar(30)
SET @username = 'ibica';
PRINT @username
DECLARE @ID_User int
SET @ID_User = ( SELECT Users.ID_User
FROM Users
WHERE Users.Username=@username )
PRINT 'smth'
PRINT @ID_User PRINT 'smth'
CONTEXT_INFO を削除したところ、出力が正しくなりました。したがって、CONTEXT_INFO と関係がある必要があります。