【发布时间】:2015-05-07 04:39:18
【问题描述】:
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,我无法生成如下内容:
<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>
是否可以更改我当前的动态 sql 以提取这些值并将它们放入它们的列名节点中?我可以采取其他步骤来产生上述结果吗?
【问题讨论】:
标签: sql sql-server sql-server-2008 dynamic-sql sqlxml