次のテーブル値関数に XML 名前空間を含めることができません。xpath 結合を実行するには、この名前空間が必要です。問題はWITHメソッドの使用にあるようですが、この構文は、クエリをストレート SQL で実行するときに必要です。
正確なエラーは次のとおりです。
「'default' 付近の構文が正しくありません。ID または QUOTED_ID が必要です。」
この T-SQL テーブル値関数本体に XML 名前空間を含めるための正確な構文を知っている人はいますか? T-SQL コードは次のとおりです。
USE [コンテキスト] GO
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