No SQL Server, é possível inserir dados por meio de uma função com valor de tabela (TVF).
Com isso, quero dizer inserir linhas nas tabelas subjacentes que a função consulta.
Para inserir uma nova linha via TVF, basta usar o mesmo T-SQL
INSERT
sintaxe que você usaria ao inserir dados diretamente na tabela. Exemplo
Aqui está um exemplo rápido para demonstrar.
A Função
Aqui está uma função rápida que seleciona dados básicos de uma tabela.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Esta função seleciona todas as linhas de uma tabela.
Eu poderia usar esta função para inserir uma nova linha nessa tabela.
Selecionar dados com a função
Veja como normalmente invocamos a função com um
SELECT
demonstração. Isso nos permite ver os dados atuais na tabela subjacente. SELECT * FROM udf_Cats_ITVF();
Resultado:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Portanto, há quatro linhas.
Inserir uma linha por meio da função
Agora vamos usar o TVF para adicionar uma nova linha.
INSERT INTO udf_Cats_ITVF() VALUES ('Scratchy', '1111111111'); SELECT * FROM udf_Cats_ITVF();
Resultado:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Então, inseri com sucesso um novo gato usando a função com valor de tabela embutida.