gpt4 book ai didi

xml - 在具有命名空间的函数中查询 XML 数据

转载 作者:行者123 更新时间:2023-12-04 17:03:17 25 4
gpt4 key购买 nike

从 XML 检索数据时遇到问题。

with xmlnamespaces ('x-elements' as x)
select
tb.[Profile].value('(x:ppr/x:static/refId)[1]', 'varchar(22)') testCol
from table1 tb

上面的代码工作得很好。但是,当我在函数中传递 XML 路径时,它会正确编译,但在调用时不返回数据,而只返回 xml 路径(传递给它)。
CREATE FUNCTION testFunc
(
@p varchar(22)
)
RETURNS nvarchar(max)
AS
BEGIN
DECLARE @Rs nvarchar(max);
with xmlnamespaces ('x-elements' as x)
select
@Rs = tb.[Profile].value('(sql:variable("@p_path"))[1]', 'nvarchar(max)')
from table1 tb
RETURN (@Rs)

END

我得到的结果是“x:ppr/x:sta”(这是一个路径而不是值)而它应该返回一个像“aJxk9pGntc5V”这样的值
请提出解决方案!

最佳答案

value()的参数函数必须是字符串文字。您不能用包含要执行的 XQuery 的变量/参数替换它。

来自 value() Method (xml Data Type)

语法

value (XQuery, SQLType)



XQuery

Is the XQuery expression, a string literal, that retrieves data inside the XML instance.



您尝试使用 sql:variable("@p_path")将插入 @p_path 的值作为 XQuery 的字符串。它不会替换整个 XQuery 表达式。它将转换为类似 value('("x:ppr/x:sta")', 'varchar(100)') 的内容

关于xml - 在具有命名空间的函数中查询 XML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com