我在以下表值函数中包含 XML 命名空间时遇到问题。我需要这个命名空间来执行 xpath 连接。问题似乎是我使用WITH方法,但是当我在直接 SQL 中执行查询时需要这种语法。
确切的错误是:
“‘默认’附近的语法不正确。预期的 ID 或 QUOTED_ID。”
有谁知道在这个 T-SQL 表值函数体中包含 XML 命名空间的确切语法?这是 T-SQL 代码:
使用 [上下文] 去
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[GetStuff]()
RETURNS @X TABLE(
DisplayName NVARCHAR(250) NULL,
StandardCode NVARCHAR(250) NULL
)
--WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
DECLARE @MyTempTable TABLE (
DisplayName NVARCHAR(250) NULL,
StandardCode NVARCHAR(250) NULL
);
;WITH XMLNAMESPACES (default 'http://www.mynamespace.org/someSchema')
INSERT INTO @MyTempTable (DisplayName, StandardCode)
SELECT Distinct OI.DisplayName, OI.StandardCode
FROM db..Actor B
JOIN db..Part DP ON B.Id = DP.Id
JOIN db..Intent OI ON OI.StandardCode = DP.XML.value('(/US/California/Orange/LA/Pizza)[1]','nvarchar(max)')
JOIN db..Status PS ON B.Id = PS.Id
WHERE PS.StandardCode in ('Happy','Employed')
AND OI.Active = 1
ORDER BY OI.DisplayName
RETURN;
END