sql >> Database >  >> RDS >> Sqlserver

Een tabelwaarde-functie wijzigen in SQL Server

U kunt een tabelwaardefunctie (TVF) in SQL Server wijzigen met behulp van de ALTER FUNCTION T-SQL-syntaxis.

Je volgt gewoon ALTER FUNCTION met de nieuwe definitie. Eigenlijk is het alsof je CREATE FUNCTION gebruikt behalve dat je CREATE . vervangt met ALTER .

Voorbeeld

Hier is een voorbeeld om te demonstreren:

FUNCTIE ALTER dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETOURTABEL MET SCHEMABINDINGASRETURN ( SELECTEER CatId, CatName, Telefoon VANUIT dbo.Cats WHERE CatName =@CatName);GO

Als deze functie nog niet bestond en ik deze voor de eerste keer aan het maken was, zou ik de volgende code gebruiken:

FUNCTIE MAKEN dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETOURTABEL MET SCHEMABINDINGASRETURN ( SELECTEER CatId, CatName, telefoon UIT dbo.Cats WHERE CatName =@CatName);GO

Het is precies hetzelfde, behalve dat het begint met CREATE in plaats van ALTER .

Vervallen en opnieuw maken

Een andere manier om dit te doen, is door de functie te verwijderen en opnieuw te maken:

DROP-FUNCTIE INDIEN BESTAAT udf_CatsByName_ITVF;GOCREATE-FUNCTIE dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETOURTABEL MET SCHEMABINDINGASRETURN (SELECT CatId, CatName, Phone FROM =dprebo.CatName

In dit geval heb ik de DIE-syntaxis (Drop If Exists) gebruikt, wat betekent dat ik geen foutmelding krijg als het object nog niet bestaat voordat ik het probeer te verwijderen.

Inline TVF's vs Multi-Statement TVF's

De voorbeelden op deze pagina gebruiken een inline tabelwaardefunctie. Hetzelfde concept is van toepassing op TVF's met meerdere verklaringen.

Zie Een inline functie met tabelwaarde maken en een functie met meerdere verklaringen maken voor meer gedetailleerde voorbeelden van elke functie.


  1. SQL Dev 4.2 Top SQL

  2. Hoe kan ik verschil z/w TIMESTAMP formaat waarden in Oracle vinden?

  3. Een PostgreSQL-replicatie-installatie maken op Debian / Ubuntu

  4. Top 10 interessante weetjes &tips over MySQL