我正在尝试循环浏览用户名列表并根据传入的用户ID授予权限。我将提供代码并在最后询问我的问题,我认为这样会更容易。
MY XML
<QueueSelector>
<DB></DB>
<FillQuery></FillQuery>
<TabText></TabText>
<TooltipText></TooltipText>
<Subscribers>
<WorkSpace>
<Name></Name>
<Name></Name>
<Name></Name>
<Name></Name>
<Name></Name>
<Name></Name>
<Name></Name>
<Name></Name>
<Name></Name>
<Name></Name>
<Name></Name>
</QueueSelector>
每个名称元素显然都包含一个用户名。我的目标是传入一个变量并根据每个名称的文本进行测试。目前我正在做..
CAST(info.query('/Root/QueueSelector/Subscribers/WorkSpace/Name/text()') AS VARCHAR(MAX)) LIKE '%' + @UserID + '%'
返回一个长字符串。问题是如果一个人有casmith可以访问,那么拥有用户名asmith的人就可以访问。
我想我的问题是什么是解决这个问题的最佳方法。我很熟悉
info.query('/Root/QueueSelector/Subscribers/WorkSpace/Name[1]/text())
但是我不知道哪个元素会包含人员用户名,如果它存在的话。
我知道我可疑地问了这个问题,我能澄清的任何事情让我知道。
答案 0 :(得分:1)
您可以使用exist() Method (xml Data Type)和sql:variable() Function (XQuery)。
info.exist('/Root/QueueSelector/Subscribers/WorkSpace/Name[. = sql:variable("@UserID")]') = 1