sql >> Databáze >  >> RDS >> Sqlserver

Změňte funkci s hodnotou tabulky na serveru SQL Server

Funkci s hodnotou tabulky (TVF) na serveru SQL můžete změnit pomocí ALTER FUNCTION Syntaxe T-SQL.

Jednoduše postupujte podle ALTER FUNCTION s novou definicí. V podstatě je to jako používat CREATE FUNCTION kromě toho, že nahradíte CREATE pomocí ALTER .

Příklad

Zde je příklad k demonstraci:

ALTER FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) VRÁTÍ TABULKU S SCHEMABINDINGASRETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats WHERE CatName =@CatName );GO

Pokud by tato funkce ještě neexistovala a vytvářel jsem ji poprvé, použil bych následující kód:

VYTVOŘIT FUNKCI dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) VRÁTÍ TABULKU S SCHEMABINDINGASRETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats WHERE CatName =@CatName ); 

Je to úplně stejné, až na to, že to začíná CREATE místo ALTER .

Uvolněte a znovu vytvořte

Dalším způsobem, jak to udělat, je zrušit funkci a vytvořit ji znovu:

DROP FUNCTION IF EXISTS udf_CatsByName_ITVF;GOCREATE FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) VRÁTÍ TABULKU SE SCHEMABINDINGASRETURN ( SELECT, Phone FROM, Catpre BoatNa> CatId. 

V tomto případě jsem použil syntaxi DIE (Drop If Exists), což znamená, že se mi nezobrazí chyba, pokud objekt před pokusem o jeho odstranění již neexistuje.

Inline TVFs versus Multi-Statement TVFs

Příklady na této stránce používají funkci vložené tabulky s hodnotou. Stejný koncept platí pro vícepříkazové TVF.

Podrobnější příklady každé z nich najdete v části Vytvoření funkce s inline tabulkovou hodnotou a Vytvoření funkce s tabulkovou hodnotou s více příkazy.


  1. Ekvivalent split funkce v T-SQL?

  2. Jak najít poslední den v měsíci na serveru SQL

  3. SELECT max(x) vrací hodnotu null; jak mohu dosáhnout toho, aby vrátil 0?

  4. Oracle Sequence negeneruje průběžné číslo