sql >> Database teknologi >  >> RDS >> Sqlserver

Ændre en funktion med tabelværdi i SQL Server

Du kan ændre en tabelværdi-funktion (TVF) i SQL Server ved hjælp af ALTER FUNCTION T-SQL-syntaks.

Du følger blot ALTER FUNCTION med den nye definition. Grundlæggende er det som at bruge CREATE FUNCTION bortset fra at du erstatter CREATE med ALTER .

Eksempel

Her er et eksempel til demonstration:

ALTER FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETURTABEL MED SCHEMABINDINGASRETURN (VÆLG CatId, CatName, Phone FRA dbo.Cats WHERE CatName =@CatName );GO

Hvis denne funktion ikke allerede eksisterede, og jeg oprettede den for første gang, ville jeg bruge følgende kode:

OPRET FUNKTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETURTABEL MED SCHEMABINDINGASRETURN (VÆLG CatId, CatName, Phone FRA dbo.Cats WHERE CatName =@CatName );GO

Det er nøjagtigt det samme, bortset fra at det begynder med CREATE i stedet for ALTER .

Slip og genskab

En anden måde at gøre det på er at droppe funktionen og oprette den igen:

DROP FUNCTION HVIS FINDER udf_CatsByName_ITVF;GOCREATE FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETURNERER TABEL MED SCHEMABINDINGASRETURN ( SELECT CatId, CatName, Phone FROM CatName.>); 

I dette tilfælde brugte jeg DIE-syntaksen (Drop If Exists), hvilket betyder, at jeg ikke får en fejlmeddelelse, hvis objektet ikke allerede eksisterer, før jeg forsøgte at slippe det.

Inline TVF'er vs Multi-Statement TVF'er

Eksemplerne på denne side bruger en inline-tabel-vurderet funktion. Det samme koncept gælder for multi-statement TVF'er.

Se Opret en integreret tabel-værdi-funktion og Opret en multi-sætning tabel-værdi-funktion for mere detaljerede eksempler på hver enkelt.


  1. RowGen v3 automatiserer generering af databasetestdata

  2. Android SQLite LIKE escape jokertegn

  3. Sådan opgraderes postgresql-database fra 10 til 12 uden at miste data til openproject

  4. ORA-21700:objekt eksisterer ikke eller er markeret til sletning for Associative Array som inputparameter kaldet fra ODP.NET