Olá pessoal,
O assunto de hoje é sobre um tema muito interessante do SQL Server, a criação de uma coluna calculada utilizando uma função SQL.
Sim é possível criar uma coluna em uma tabela tomando como base uma função e para isto iremos seguir os seguintes passos:
- Criação de uma tabela (com colunas: id e nome)
- Inserção de dados na tabela
- Criação de uma função SQL (que retornará “id – nome” )
- Adição da coluna utilizando a função SQL criada
Atenção este é um cenário para exemplificar uma funcionalidade e o uso do mesmo pode impactar a performance em suas queries.
A utilização desta solução é por sua conta e risco.
Vamos criar a tabela com o seguinte comando SQL:
1 2 3 4 5 6 7 |
--drop TABLE dbo.TempSuzuki go CREATE TABLE dbo.TempSuzuki ( ID INT IDENTITY(1,1), Name VARCHAR(50) ) |
Vamos inserir alguns dados com o seguinte comando SQL:
1 2 |
INSERT INTO dbo.TempSuzuki VALUES ('Thiago Satoshi Suzuki') INSERT INTO dbo.TempSuzuki VALUES ('João da Silva') |
Vamos consultar os dados da tabela com o seguinte comando SQL:
1 |
SELECT * FROM dbo.TempSuzuki |
O resultado deve ser como este:
Vamos criar a função com o seguinte comando SQL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
--DROP FUNCTION dbo.TestTempSuzuki GO CREATE FUNCTION dbo.TestTempSuzuki(@id INT) RETURNS VARCHAR(100) AS /* <SUMMARY CREATED="30/04/2015" CREATOR="SUZUKI" Used to create the date column. </SUMMARY> <HISTORY> </HISTORY> */ BEGIN DECLARE @result VARCHAR(100) SELECT @result = CAST(ID AS VARCHAR) + ' - ' + Name FROM dbo.TempSuzuki WHERE ID = @id RETURN @result END GO |
O comando a seguir mostra como utilizar a função SQL em uma query:
1 2 |
select *, dbo.TestTempSuzuki (id) from dbo.TempSuzuki |
O resultado da consulta deve ser como este:
Este é comando SQL “mágico” que adiciona a coluna usando a função SQL que acabamos de criar:
1 |
ALTER TABLE dbo.TempSuzuki ADD Composite AS dbo.TestTempSuzuki(id) |
Agora quando consultamos a tabela com o seguinte comando:
1 |
select * from dbo.TempSuzuki |
Teremos o seguinte resultado:
Note que a coluna Composite é o resultado da função SQL.
Obrigado por ler este post.
Curta e compartilhe se se você gostou!
Gostaria de ver a versão inglesa deste post?
Clique na bandeira inglesa ->