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

我正确设置了 context_info,因为 PRINT @username 返回正确的值,但我在第二次打印时得到一个空行。如果我在上面的 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