sql >> Database >  >> RDS >> Database

Vind de kolommen die worden geretourneerd door een functie met tabelwaarde (T-SQL-voorbeelden)

In SQL Server kunt u de Transact-SQL ROUTINE_COLUMNS systeeminformatieschema om de kolommen te vinden die worden geretourneerd door een functie met tabelwaarde.

Meer specifiek retourneert het één rij voor elke kolom die wordt geretourneerd door de tabelwaardefuncties die toegankelijk zijn voor de huidige gebruiker in de huidige database.

Om deze weergave te gebruiken, geeft u de volledig gekwalificeerde naam op van INFORMATION_SCHEMA.ROUTINE_COLUMNS .

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld.

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;
>

Resultaat:

+------------+----------+-------------------+------------+-------------+-------------------+
| 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                |
+------------+----------+-------------------+------------+-------------+-------------------+

Deze resultaten laten me zien dat er maar één functie met tabelwaarde is waartoe ik toegang heb in de database, en deze retourneert drie kolommen.

In dit voorbeeld heb ik ervoor gekozen om slechts zes kolommen uit de weergave te retourneren. In het volgende voorbeeld worden alle kolommen weergegeven die door de weergave worden geretourneerd.

Voorbeeld 2 – Alle kolommen retourneren vanuit de weergave

In dit voorbeeld neem ik alle kolommen op die de weergave retourneert. Ik gebruik ook verticale uitvoer, zodat je niet gedwongen wordt om horizontaal te scrollen. Kortheidshalve specificeer ik ook dat de weergave informatie over slechts één kolom retourneert (daarom wordt slechts één rij geretourneerd).

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

Resultaat (met verticale uitvoer):

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

Zie de Microsoft-documentatie voor informatie over elke kolom die door deze weergave wordt geretourneerd.


  1. Hoe schrijf je een functie die tekst- of integerwaarden retourneert?

  2. SQL-code programmatisch genereren

  3. Retourneer alle externe sleutels en CONTROLEER-beperkingen in een SQL Server-database (T-SQL-voorbeelden)

  4. GROUP_CONCAT equivalent in Django