Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何创建表的快照,它';存储在xml对象中的列和相应的值_Sql_Sql Server_Sql Server 2008_Dynamic Sql_Sqlxml - Fatal编程技术网

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>

这不会让你得到与你所寻找的相同的模式,但它确实包含了你想要的所有数据,而且非常简单…

谢谢,这很有帮助,但并不完全是我想要的,我现在正在尝试调整它