Database
 sql >> Base de Dados >  >> RDS >> Database

Encontre as colunas retornadas por uma função com valor de tabela (exemplos de T-SQL)


No SQL Server, você pode usar o Transact-SQL ROUTINE_COLUMNS visualização do esquema de informações do sistema para localizar as colunas retornadas por uma função com valor de tabela.

Mais especificamente, ele retorna uma linha para cada coluna retornada pelas funções com valor de tabela que podem ser acessadas pelo usuário atual no banco de dados atual.

Para usar essa visualização, especifique o nome totalmente qualificado de INFORMATION_SCHEMA.ROUTINE_COLUMNS .


Exemplo 1 – Uso básico


Aqui está um exemplo.
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;

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

Esses resultados me mostram que há apenas uma função com valor de tabela que posso acessar no banco de dados e ela retorna três colunas.

Neste exemplo optei por retornar apenas seis colunas da view. O exemplo a seguir exibe todas as colunas retornadas pela exibição.

Exemplo 2 – Retornar todas as colunas da visualização


Neste exemplo eu incluo todas as colunas que a view retorna. Eu também uso saída vertical para que você não seja forçado a rolar horizontalmente. Além disso, por uma questão de brevidade, especifico que a exibição retorne informações sobre apenas uma coluna (portanto, apenas uma linha é retornada).
SELECT * 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS
WHERE TABLE_NAME = 'ufn_AlbumsByGenre'
AND COLUMN_NAME = 'ArtistName';

Resultado (usando saída vertical):
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

Consulte a documentação da Microsoft para obter informações sobre cada coluna retornada por essa exibição.