Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Here's the first technical tid-bit on this blog in awhile, courtesy of a long-concluded internal conversation that I rediscovered when I was cleaning out three months' worth of email from my inbox.
Roger wrote:
I'm trying to use the modify() method against an XML variable, and I keep getting "must be a string literal" errors. Any suggestions?
While it's true that native T-SQL doesn't currently support this scenario, Jerry came to the rescue with an approach utilizing parameterized dynamic SQL with output parameters. Here's Jerry's stored procedure, along with a sample call:
-- procedure to call modify() method
create procedure dynamic_xml_modify(@xquery nvarchar(max), @x xml output)
as
begin
declare @sql nvarchar(max);
-- quote ' characters to prevent sql injection
set @sql = N'set @p.modify(''' + replace(@xquery, N'''', N'''''') + ''');'
exec sp_executesql @sql, N'@p xml output', @p = @x output
end
go
-- sample call
declare @x xml;
set @x = N'<a/>';
exec dynamic_xml_modify N'insert <b/> as first into (/a)[1]', @x output;
select @x;
Thanks, Jerry, for allowing me to blog this innovative approach of yours. Sorry it took me almost three months to post it!
-wp