Database
 sql >> Datenbank >  >> RDS >> Database

Suchen der von einer Tabellenwertfunktion zurückgegebenen Spalten (T-SQL-Beispiele)

In SQL Server können Sie die Transact-SQL ROUTINE_COLUMNS verwenden Schemaansicht der Systeminformationen, um die Spalten zu finden, die von einer Tabellenwertfunktion zurückgegeben werden.

Genauer gesagt gibt es eine Zeile für jede Spalte zurück, die von den Tabellenwertfunktionen zurückgegeben wird, auf die der aktuelle Benutzer in der aktuellen Datenbank zugreifen kann.

Um diese Ansicht zu verwenden, geben Sie den vollständig qualifizierten Namen INFORMATION_SCHEMA.ROUTINE_COLUMNS an .

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel.

SELECT 
  TABLE_CATALOG AS [Database],
  TABLE_SCHEMA AS [Schema],
  TABLE_NAME AS [Function],
  COLUMN_NAME AS [Column],
  DATA_TYPE AS [Data Type],
  CHARACTER_MAXIMUM_LENGTH AS [Char Max Length] 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS;

Ergebnis:

+------------+----------+-------------------+------------+-------------+-------------------+
| Database   | Schema   | Function          | Column     | Data Type   | Char Max Length   |
|------------+----------+-------------------+------------+-------------+-------------------|
| Music      | dbo      | ufn_AlbumsByGenre | ArtistName | nvarchar    | 255               |
| Music      | dbo      | ufn_AlbumsByGenre | AlbumName  | nvarchar    | 255               |
| Music      | dbo      | ufn_AlbumsByGenre | Genre      | nvarchar    | 50                |
+------------+----------+-------------------+------------+-------------+-------------------+

Diese Ergebnisse zeigen mir, dass es nur eine Tabellenwertfunktion gibt, auf die ich in der Datenbank zugreifen kann, und sie gibt drei Spalten zurück.

In diesem Beispiel habe ich mich dafür entschieden, nur sechs Spalten aus der Ansicht zurückzugeben. Das folgende Beispiel zeigt alle von der Ansicht zurückgegebenen Spalten an.

Beispiel 2 – Alle Spalten aus der Ansicht zurückgeben

In diesem Beispiel füge ich alle Spalten hinzu, die die Ansicht zurückgibt. Ich verwende auch eine vertikale Ausgabe, damit Sie nicht gezwungen sind, horizontal zu scrollen. Außerdem lege ich der Kürze halber fest, dass die Ansicht nur Informationen zu einer Spalte zurückgibt (daher wird nur eine Zeile zurückgegeben).

SELECT * 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS
WHERE TABLE_NAME = 'ufn_AlbumsByGenre'
AND COLUMN_NAME = 'ArtistName';

Ergebnis (bei vertikaler Ausgabe):

TABLE_CATALOG            | Music
TABLE_SCHEMA             | dbo
TABLE_NAME               | ufn_AlbumsByGenre
COLUMN_NAME              | ArtistName
ORDINAL_POSITION         | 1
COLUMN_DEFAULT           | NULL
IS_NULLABLE              | NO
DATA_TYPE                | nvarchar
CHARACTER_MAXIMUM_LENGTH | 255
CHARACTER_OCTET_LENGTH   | 510
NUMERIC_PRECISION        | NULL
NUMERIC_PRECISION_RADIX  | NULL
NUMERIC_SCALE            | NULL
DATETIME_PRECISION       | NULL
CHARACTER_SET_CATALOG    | NULL
CHARACTER_SET_SCHEMA     | NULL
CHARACTER_SET_NAME       | UNICODE
COLLATION_CATALOG        | NULL
COLLATION_SCHEMA         | NULL
COLLATION_NAME           | SQL_Latin1_General_CP1_CI_AS
DOMAIN_CATALOG           | NULL
DOMAIN_SCHEMA            | NULL
DOMAIN_NAME              | NULL

Informationen zu jeder von dieser Ansicht zurückgegebenen Spalte finden Sie in der Microsoft-Dokumentation.