SQL Server - 遍历每个表中的每一列?

时间:2011-08-02 16:25:14

标签: sql-server loops

我有一个我在10年或15年没见过的业务需求,所以请原谅我将用来说明我正在尝试做的事情的dino代码。我知道有一种方法可以在SQL Server中做这样的事情,但对我来说,它已经太过分了。

回到MS DAO时代,我会使用类似的东西来遍历每个表格中的每个字段。啊......回忆......

Dim dbs as DAO.Database
Dim tdf as DAO.TableDef
Dim fld as DAO.Field

For Each tdf in dbs.TableDefs
    For Each fld in tdf.Fields
        'Do whatever to every field in every table here.
    Next
Next

任何人都可以给我一个SQL-Server等价物吗?

编辑:在我可以设置的循环结构中,我还需要引用表名和字段名(即:tdf.Name和fld.Name)。感谢!!!

编辑2 :仅供参考我将从逻辑中构建SELECT语句。

1 个答案:

答案 0 :(得分:10)

这将为您提供当前数据库所在行的每一列:

SELECT s.name SchemaName, t.name TableName, c.name ColumnName
FROM sys.columns c INNER JOIN
     sys.tables t ON c.object_id = t.object_id INNER JOIN
     sys.schemas s ON t.schema_id = s.schema_id
;

您可以使用任意数量的数据访问技术(ADO .NET,LINQ等)进行迭代。