Rubrik: | VB-Versionen: VB2008, VB2010, VB2012 | 01.09.14 |
SELECT-Anweisungen zur Datentabellen-Struktur (SQL 2012) Es werden zwei SELECT-Anweisungen für die Informationsgewinnung zur Struktur einer spezifischen Datentabelle gezeigt. | ||
Autor: Dietrich Herrmann | Bewertung: | Views: 1.584 |
ohne Homepage | System: Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Die zwei nachfolgend gezeigten SELECT-Anweisungen für SQL2012 gestatten die Ermittlung
- von Strukturdaten und
- des Namens der PrimaryKey-Spalte
einer durch 'MeineTabelle' spezifizierten Datentabelle einer Datenbank.
Die Anweisungen übergebe ich gleich in VB-Code;
der Tabellenname muss bei der Anwendung entsprechend an der Stelle 'MeineTabelle' modifiziert werden.
1. Struktur:
Dim structSel As String = _ "SELECT COL.name AS column_name, ST.name AS data_type, " & _ "COL.max_length AS character_maximum_length, COL.precision AS numeric_precision, " & _ "COL.scale AS numeric_scale, COL.is_nullable AS nullable, COL.is_computed AS computed, " & _ "SCC.definition AS formula " & _ "FROM sys.tables AS TBL " & _ "INNER JOIN sys.columns AS COL ON TBL.object_id = COL.object_id " & _ "INNER JOIN sys.types AS ST ON COL.system_type_id = ST.system_type_id " & _ "LEFT OUTER JOIN INFORMATION_SCHEMA.COLUMNS AS ISC " & _ "ON COL.name = ISC.COLUMN_NAME AND TBL.name = ISC.TABLE_NAME " & _ "LEFT OUTER JOIN sys.computed_columns AS SCC ON COL.object_id = SCC.object_id " & _ "AND COL.column_id = SCC.column_id " & _ "WHERE (TBL.name = 'MeineTabelle') AND (ST.name <> 'sysname') " & _ "ORDER BY ISC.ORDINAL_POSITION"
2. Spalte PrimaryKey:
Dim keySel As String = _ "SELECT Col.COLUMN_NAME " & _ "FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS Tab " & _ "INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS Col " & _ "ON Tab.CONSTRAINT_NAME = Col.CONSTRAINT_NAME AND Tab.TABLE_NAME = Col.TABLE_NAME " & _ "WHERE (Tab.CONSTRAINT_TYPE = 'PRIMARY KEY') AND (Col.TABLE_NAME = 'MeineTabelle')"