Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Inserir dados por meio de uma função com valor de tabela no SQL Server


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.