XMLを返すSQL Server 2012でユーザー定義関数を作成しました。私は、SELECT文で関数を呼びたいと思います。これは可能ですか?私はそれをやってみたとき は、私はエラーを取得する:xmlデータを返すselectステートメントでユーザー定義関数を呼び出す
The FOR XML clause is not allowed in a ASSIGNMENT statement.
私はSELECT文はそのロジック内の他の名前のメソッドの依存関係を持つこれらの名前のメソッドのセットを返すようにしたいです。 メインのCTEでは、依存関係を持つメソッドの最新バージョンを取得します。 UDFは各メソッドのロジックを経て、その中で呼び出されたメソッドを返します。だから、私は、SELECTステートメントでUDFを呼び出し、依存するメソッド名のXMLを返したいと思います。
この関数は動作し、XMLデータを返します。これは関数です。
ALTER FUNCTION [dbo].[GetCalledMLMs]
(
-- Add the parameters for the function here
@MLM_Txt nvarchar(MAX)
)
RETURNS XML
AS
BEGIN
-- Declare the return variable here
DECLARE @CalledMLMs XML
Declare @MLMTbl table (pos int, endpos int, CalledMLM nvarchar(200))
--Logic to get the data...
Select @CalledMLMs = CalledMLM from @MLMTbl FOR XML PATH
-- Return the result of the function
RETURN @CalledMLMs
END
これはUDFを呼び出すCTEです。
;with cte as
(
select distinct Name, max(ID) as LatestVersion
from MLM_T
where Logic like '%:= MLM %' and Logic not like '%standard_libs := mlm%'
group by Name
)
select MLM2.Name, LatestVersion,
dbo.GetCalledMLMs(MLM2.Logic) as CalledMLMs
from cte join MLM_T MLM2 on cte.Name = MLM2.Name
and cte.LatestVersion = MLM2.ID
and MLM2.Active = 1 and MLM2.Status in (3, 4)
このクエリを実行すると、XMLが代入文で使用できないというエラーが表示されます。 XMLデータ型を返すSELECT文で関数を呼び出す方法はありますか?
にこれを変更しようと申し訳ありませんが、私は唯一の小切手1の答えを受け入れることができることを認識していませんでした。元の質問を解決したので、私はあなたのものを選択します。メモをありがとう。 –