2
に基づいて、いくつかのXML属性を変更します。私がやりたい何 SQL Server XML add attribute if non-existent前のポストからリスト
すると、複数のタグを変更することが可能です。以下は、私が何をしたいのかを示すコードですが、エラーが出るので、できません。XMLデータ型のメソッド "exists"の引数1は文字列リテラルでなければなりません。リテラルではなく変数を使用してXMLを変更する方法はありますか?
ALTER FUNCTION [dbo].[ConvertXmlData](@xmlData XML)
RETURNS XML
AS
BEGIN
DECLARE @tags TABLE (
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
TAG VARCHAR(25)
)
INSERT INTO @tags
SELECT 'xxx' UNION
SELECT 'yyy'
DECLARE @counter INT
DECLARE @count INT
DECLARE @id INT
DECLARE @tag VARCHAR(25)
DECLARE @exist VARCHAR(100)
DECLARE @insert VARCHAR(100)
DECLARE @existX VARCHAR(100)
DECLARE @insertX VARCHAR(100)
SET @exist = 'descendant::{0}[not(@runat)]'
SET @insert = 'insert attribute runat { "server" } into descendant::{0}[not(@runat)][1]'
SET @counter = 1
SELECT @count = COUNT(*) FROM @tags
WHILE @counter <= @count BEGIN
SELECT @tag = TAG FROM @tags WHERE ID = @counter
SET @existX = REPLACE(@existX, '[0]', @tag)
WHILE @xmlData.exist(@existX) = 1 BEGIN
SET @xmlData.modify(REPLACE(@insertX, '[0]', @tag));
END
SET @counter = @counter + 1
END
RETURN @xmlData
END
素晴らしいです!正確に私が必要としたもの。 –