0
我想用一些值(存储为NVARCHAR(128))设置CONTEXT_INFO,然后在其他位置读取该值并使用它创建一个xml变量。不幸的是,在选择有阅读更多的字符,不知道如何解决它。 代码以再现:context_info和nvarchar - 选择附加字符
exec dbo.[SetConnectedUser] 'p'
DECLARE @contextInfo VARCHAR(128) = NULLIF(CAST(CONTEXT_INFO() as VARCHAR(128)), '')
SELECT @contextInfo AS 'ContextInfo'
FOR XML PATH('Message')
select @contextInfo, len(@contextInfo)
的@contextInfo变量返回的是我设置为存储过程,在这种情况下,“P”。但是,这个变量的长度为128
创建的XML toolks说:
<Message>
<ContextInfo>p�������������������������������������������������������������������������������������������������������������������������������</ContextInfo>
</Message>
如何删除这些不必要的字符?
的过程:
CREATE PROCEDURE dbo.[SetConnectedUser](@userId VARCHAR(128))
AS
BEGIN
DECLARE @context VARBINARY(128)
SET @context = CAST(@UserId AS VARBINARY(128))
--SET CONTEXT_INFO 0x0
SET CONTEXT_INFO @context
END