Sql 如何创建表的快照,它';存储在xml对象中的列和相应的值
执行时会产生如下结果:Sql 如何创建表的快照,它';存储在xml对象中的列和相应的值,sql,sql-server,sql-server-2008,dynamic-sql,sqlxml,Sql,Sql Server,Sql Server 2008,Dynamic Sql,Sqlxml,执行时会产生如下结果: DECLARE @TableName NVARCHAR(MAX) = 'my_TableNameName'; DECLARE @SQL NVARCHAR(500); DECLARE @PrimaryID NVARCHAR(MAX) = '228'; SELECT @SQL = N'SELECT c.column_name AS ''@name'', c.data_type AS ''@data_type''
DECLARE @TableName NVARCHAR(MAX) = 'my_TableNameName';
DECLARE @SQL NVARCHAR(500);
DECLARE @PrimaryID NVARCHAR(MAX) = '228';
SELECT @SQL =
N'SELECT
c.column_name AS ''@name'',
c.data_type AS ''@data_type'',
ISNULL(c.character_maximum_length, '''') AS ''@character_maximum_length''
--[Current Column Value??]
FROM INFORMATION_SCHEMA.COLUMNS c
JOIN ' + @TableName + ' t on
t.ID = ''' + @PrimaryID + '''
WHERE TABLE_NAME = ''' + @TableName + ''' and TABLE_SCHEMA=''dbo''
FOR XML PATH(''column''), ROOT(''' + @TableName + ''')';
PRINT @SQL
<my_TableName>
<column name="aName" data_type="int" character_maximum_length="0" />
<column name="bName" data_type="int" character_maximum_length="0" />
<column name="cName" data_type="varchar" character_maximum_length="50" />
</my_TableName>
但是,对于传递给sql的给定id,我很难生成如下内容:
DECLARE @TableName NVARCHAR(MAX) = 'my_TableNameName';
DECLARE @SQL NVARCHAR(500);
DECLARE @PrimaryID NVARCHAR(MAX) = '228';
SELECT @SQL =
N'SELECT
c.column_name AS ''@name'',
c.data_type AS ''@data_type'',
ISNULL(c.character_maximum_length, '''') AS ''@character_maximum_length''
--[Current Column Value??]
FROM INFORMATION_SCHEMA.COLUMNS c
JOIN ' + @TableName + ' t on
t.ID = ''' + @PrimaryID + '''
WHERE TABLE_NAME = ''' + @TableName + ''' and TABLE_SCHEMA=''dbo''
FOR XML PATH(''column''), ROOT(''' + @TableName + ''')';
PRINT @SQL
<my_TableName>
<column name="aName" data_type="int" character_maximum_length="0" />
<column name="bName" data_type="int" character_maximum_length="0" />
<column name="cName" data_type="varchar" character_maximum_length="50" />
</my_TableName>
阿瓦鲁
B值
C值
是否可以更改我当前的动态sql以提取这些值并将它们放入它们的列名节点中?我是否可以采取其他步骤来产生上述结果 你试过这个吗
<my_TableName>
<column name="aName" data_type="int" character_maximum_length="0">aValue</column>
<column name="bName" data_type="int" character_maximum_length="0">bValue</column>
<column name="cName" data_type="varchar" character_maximum_length="50">cValue</column>
</my_TableName>
这不会让你得到与你所寻找的相同的模式,但它确实包含了你想要的所有数据,而且非常简单…谢谢,这很有帮助,但并不完全是我想要的,我现在正在尝试调整它