gpt4 book ai didi

sql - 在标量值函数中使用 Xquery

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

我有下面的查询返回我需要的信息,但我需要在标量值函数中使用这个查询来使用计算列中的返回值。

XML 列在同一个表中,我需要将 Settings 中的值插入到名为 Directions 的列中

;WITH XMLNAMESPACES ( 'http://www.w3.org/2001/XMLSchema' AS als )
SELECT
a.a.value('@Settings', 'VARCHAR(50)') AS [Settings]

FROM Base AS X
CROSS APPLY X.BaseXML.nodes('als:Name') a(a)

我正在尝试但没有得到任何地方的功能是
CREATE FUNCTION [dbo].[ChooseRevision](@lineId int) Returns integer As
Begin
Return (WITH XMLNAMESPACES ( 'http://www.w3.org/2001/XMLSchema' AS als )
SELECT
a.a.value('@Settings', 'VARCHAR(50)') AS [Settings]

FROM Base AS X
CROSS APPLY X.BaseXML.nodes('als:Name') a(a)
Where LineId = @lideid
)
End

GO

您如何将查询包含在一个 Scarlar 函数中以用作计算列?
<als:Doc xmlns:als="http://www.w3.org/2001/XMLSchema" SchemaVersion="0.1" Settings="First Test" Title="Recovery Loop">
<als:Base Rev="0" Id="201" />
<als:Number TimeStamp="2013-01-21T15:08:00">
<als:Member Name="Club Run" DirId="123" />
</als:Number>
</als:Doc>

最佳答案

假设只有一个 als:Name每个 XML 值的节点你可以这样写:

CREATE FUNCTION [dbo].[ChooseRevision](@lineId int) 
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @r VARCHAR(50);
WITH XMLNAMESPACES('http://www.w3.org/2001/XMLSchema' AS als)
SELECT
@r = BaseXML.value('als:Doc[1]/@Settings', 'VARCHAR(50)')
FROM Base
WHERE LineId = @lineId;
RETURN @r;
END

如果您打算在 dbo.Base 表本身中使用此函数,则应改用此版本:
CREATE FUNCTION [dbo].[ChooseRevision](@xml XML) 
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @r VARCHAR(50);
WITH XMLNAMESPACES('http://www.w3.org/2001/XMLSchema' AS als)
SELECT @r = @xml.value('als:Doc[1]/@Settings', 'VARCHAR(50)')
RETURN @r;
END

关于sql - 在标量值函数中使用 Xquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572013/

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