想要做的是这样的事情:
declare @id int
set @id = (select ID from tbUsers where Name = 'John_Stack')
declare @xml xml
set @xml = '<users> <user id = "' + @id + '"/></users>'
服务器中止说
操作数类型碰撞:int与xml不兼容。
这样做的最佳方式是什么?
我正在使用SQL Server 2005。
提前致谢。
答案 0 :(得分:3)
declare @id int
set @id = (select ID from tbUsers where Name = 'John_Stack')
declare @xml xml
set @xml = '<users> <user id = "' + CONVERT(varchar,@id) + '"/></users>'
答案 1 :(得分:1)
您可能希望避免使用字符串连接从头开始构建自己的XML。至少对我来说,感觉不干净,特别是当你有更好的工具供你使用时。例如,在SQL Server 2005中,您可以执行此操作并获得所需的结果:
Declare @xml xml;
Set @xml = (
Select id As [@id]
From tbUsers
Where Name = 'John_Stack'
For XML Path('user'), Root('users'), Type);
或者,如果您认为tbUsers不会拥有您的用户,但即使没有返回任何行,您仍然需要根<users />
元素,您可以使用此变体:
Declare @xml xml;
Set @xml = (
Select (
Select id As [@id]
From tbUsers
Where Name = 'John_Stack'
For XML Path('user'), Type)
For XML Path('users'), Type);