2011-08-02 2 views
5

J'ai un besoin d'affaires que je n'ai pas vu depuis 10 ou 15 ans, alors s'il vous plaît excusez le dino-code que j'utiliserai pour illustrer ce que j'essaie de faire. Je sais qu'il existe un moyen de faire quelque chose comme ça dans SQL Server, il a juste été trop long pour moi.SQL Server - Boucle à travers chaque colonne dans chaque table?

À l'époque des MS DAO, j'utilisais quelque chose comme ça pour parcourir tous les champs de chaque table. Ahh ... Memories ...

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 

Quelqu'un peut-il me donner un équivalent SQL-Server?

EDIT: A l'intérieur quelle que soit la structure en boucle, je peux mettre en place, je dois également faire référence au nom de la table et le nom de domaine (par exemple: tdf.Name et fld.Name). Merci!!!

EDIT 2: FYI Je vais créer des instructions SELECT à partir de la logique.

Répondre

10

Cela vous obtiendrez chaque colonne dans sa propre ligne de la base de données actuelle:

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 
; 

Vous pouvez itérer qu'en utilisant un certain nombre de technologies d'accès aux données (ADO .NET, LINQ, etc.).

Questions connexes