0
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 と関係がある必要があります。

4

0 に答える 0