Freigeben über


ALTER FUNCTION (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricWarehouse in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Ändert eine vorhandene Transact-SQL- oder CLR-Funktion, die zuvor durch Ausführen der CREATE FUNCTION Anweisung erstellt wurde, ohne Berechtigungen zu ändern und ohne dass abhängige Funktionen, gespeicherte Prozeduren oder Trigger betroffen sind.

Tipp

Sie können angeben CREATE OR ALTER FUNCTION , dass eine neue Funktion erstellt wird, wenn sie nicht mit diesem Namen vorhanden ist, oder eine vorhandene Funktion in einer einzelnen Anweisung ändern.

Transact-SQL-Syntaxkonventionen

Syntax

-- Transact-SQL Scalar Function Syntax    
ALTER FUNCTION [ schema_name. ] function_name   
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type   
    [ = default ] }   
    [ ,...n ]  
  ]  
)  
RETURNS return_data_type  
    [ WITH <function_option> [ ,...n ] ]  
    [ AS ]  
    BEGIN   
        function_body   
        RETURN scalar_expression  
    END  
[ ; ]
-- Transact-SQL Inline Table-Valued Function Syntax
ALTER FUNCTION [ schema_name. ] function_name   
( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type   
    [ = default ] }   
    [ ,...n ]  
  ]  
)  
RETURNS TABLE  
    [ WITH <function_option> [ ,...n ] ]  
    [ AS ]  
    RETURN [ ( ] select_stmt [ ) ]  
[ ; ]  
-- Transact-SQL Multistatement Table-valued Function Syntax
ALTER FUNCTION [ schema_name. ] function_name   
( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type   
    [ = default ] }   
    [ ,...n ]  
  ]  
)  
RETURNS @return_variable TABLE <table_type_definition>  
    [ WITH <function_option> [ ,...n ] ]  
    [ AS ]  
    BEGIN   
        function_body   
        RETURN  
    END  
[ ; ]  
-- Transact-SQL Function Clauses   
<function_option>::=   
{  
    [ ENCRYPTION ]  
  | [ SCHEMABINDING ]  
  | [ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]  
  | [ EXECUTE_AS_Clause ]  
} 

<table_type_definition>:: =   
( { <column_definition> <column_constraint>   
  | <computed_column_definition> }   
    [ <table_constraint> ] [ ,...n ]  
)   
<column_definition>::=  
{  
    { column_name data_type }  
    [ [ DEFAULT constant_expression ]   
      [ COLLATE collation_name ] | [ ROWGUIDCOL ]  
    ]  
    | [ IDENTITY [ (seed , increment ) ] ]  
    [ <column_constraint> [ ...n ] ]   
}  

<column_constraint>::=   
{  
    [ NULL | NOT NULL ]   
    { PRIMARY KEY | UNIQUE }  
      [ CLUSTERED | NONCLUSTERED ]   
        [ WITH FILLFACTOR = fillfactor   
        | WITH ( < index_option > [ , ...n ] )  
      [ ON { filegroup | "default" } ]  
  | [ CHECK ( logical_expression ) ] [ ,...n ]  
}  

<computed_column_definition>::=  
column_name AS computed_column_expression   

<table_constraint>::=  
{   
    { PRIMARY KEY | UNIQUE }  
      [ CLUSTERED | NONCLUSTERED ]   
      ( column_name [ ASC | DESC ] [ ,...n ] )  
        [ WITH FILLFACTOR = fillfactor   
        | WITH ( <index_option> [ , ...n ] )  
  | [ CHECK ( logical_expression ) ] [ ,...n ]  
}  

<index_option>::=  
{   
    PAD_INDEX = { ON | OFF }   
  | FILLFACTOR = fillfactor   
  | IGNORE_DUP_KEY = { ON | OFF }  
  | STATISTICS_NORECOMPUTE = { ON | OFF }   
  | ALLOW_ROW_LOCKS = { ON | OFF }  
  | ALLOW_PAGE_LOCKS ={ ON | OFF }   
}  
-- CLR Scalar and Table-Valued Function Syntax
ALTER FUNCTION [ schema_name. ] function_name   
( { @parameter_name [AS] [ type_schema_name. ] parameter_data_type   
    [ = default ] }   
    [ ,...n ]  
)  
RETURNS { return_data_type | TABLE <clr_table_type_definition> }  
    [ WITH <clr_function_option> [ ,...n ] ]  
    [ AS ] EXTERNAL NAME <method_specifier>  
[ ; ]  
-- CLR Function Clauses
<method_specifier>::=  
    assembly_name.class_name.method_name  

<clr_function_option>::=  
}  
    [ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]  
  | [ EXECUTE_AS_Clause ]  
}  

<clr_table_type_definition>::=   
( { column_name data_type } [ ,...n ] )  
-- Syntax for In-Memory OLTP: Natively compiled, scalar user-defined function  
ALTER FUNCTION [ schema_name. ] function_name    
 ( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type   
    [ NULL | NOT NULL ] [ = default ] }   
    [ ,...n ]   
  ]   
)   
RETURNS return_data_type  
    [ WITH <function_option> [ ,...n ] ]   
    [ AS ]   
    BEGIN ATOMIC WITH (set_option [ ,... n ])  
        function_body   
        RETURN scalar_expression  
    END  

<function_option>::=   
{ |  NATIVE_COMPILATION   
  |  SCHEMABINDING   
  | [ EXECUTE_AS_Clause ]   
  | [ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]   
}  

Argumente

schema_name

Der Name des Schemas, zu dem die benutzerdefinierte Funktion gehört.

function_name

Die benutzerdefinierte Funktion, die geändert werden soll.

Hinweis

Auf den Funktionsnamen müssen Klammern folgen, selbst wenn kein Parameter angegeben ist.

@ Parametername

Ein Parameter in der benutzerdefinierten Funktion. Ein oder mehrere Parameter können deklariert werden.

Eine Funktion kann maximal 2.100 Parameter haben. Der Benutzer muss beim Ausführen einer Funktion den Wert jedes deklarierten Parameters angeben (sofern kein Standardwert für den betreffenden Parameter definiert ist).

Geben Sie einen Parameternamen an, der mit dem Zeichen ( @ ) beginnt. Der Parametername muss den Regeln für Bezeichner entsprechen. Parameter gelten lokal in der jeweiligen Funktion. Dieselben Parameternamen können in anderen Funktionen verwendet werden. Parameter können nur den Platz von Konstanten einnehmen. Sie können nicht anstelle von Tabellennamen, Spaltennamen oder Namen anderer Datenbankobjekte verwendet werden.

Hinweis

ANSI_WARNINGS wird beim Übergeben von Parametern in einer gespeicherten Prozedur oder einer benutzerdefinierten Funktion oder beim Deklarieren und Festlegen von Variablen in einer Batchanweisung nicht berücksichtigt. Wird beispielsweise eine Variable als char(3) definiert und dann auf einen Wert festgelegt, der länger als drei Zeichen ist, werden die Daten auf die definierte Größe abgeschnitten, und die Anweisung INSERT oder UPDATE wird erfolgreich ausgeführt.

[ type_schema_name. ] parameter_data_type

Der Parameterdatentyp und optional das Schema, zu dem der Datentyp gehört. Für Transact-SQL-Funktionen sind abgesehen vom timestamp-Datentyp alle Datentypen zulässig, einschließlich benutzerdefinierter CLR-Typen. Für CLR-Funktionen sind abgesehen von den Datentypen text, ntext, image und timestamp alle Datentypen zulässig, einschließlich benutzerdefinierter CLR-Typen. Die nicht skalaren Typen cursor und table können weder in Transact-SQL- noch in CLR-Funktionen als Parameterdatentyp angegeben werden.

Wenn type_schema_name nicht angegeben ist, sucht die SQL Server-Datenbank-Engine in der folgenden Reihenfolge nach dem parameter_data_type:

  • Das Schema, das die Namen von SQL Server-Systemdatentypen enthält

  • Das Standardschema des aktuellen Benutzers in der aktuellen Datenbank

  • Das dbo-Schema muss in der aktuellen Datenbank vorhanden sein.

[ = Standard ] **

Ein Standardwert für den Parameter. Wenn ein default-Wert definiert ist, kann die Funktion ausgeführt werden, ohne dass ein Wert für diesen Parameter angegeben werden muss.

Hinweis

Standardparameterwerte können mit Ausnahme der Datentypen varchar(max) und varbinary(max) für CLR-Funktionen angegeben werden.

Wenn ein Parameter der Funktion über einen Standardwert verfügt, muss beim Aufrufen der Funktion das DEFAULT-Schlüsselwort angegeben werden, um den Standardwert abzurufen. In diesem Punkt gibt es einen Unterschied zum Verwenden von Parametern in einer gespeicherten Prozedur. Fehlt im Aufruf einer gespeicherten Prozedur ein Parameter, der einen Standardwert hat, wird automatisch dieser Standardwert verwendet.

return_data_type

Der Rückgabewert einer benutzerdefinierten skalaren Funktion. Für Transact-SQL-Funktionen sind abgesehen vom timestamp-Datentyp alle Datentypen zulässig, einschließlich benutzerdefinierter CLR-Typen. Für CLR-Funktionen sind abgesehen von den Datentypen text, ntext, image und timestamp alle Datentypen zulässig, einschließlich benutzerdefinierter CLR-Typen. Die nicht skalaren Typen cursor und table können weder in Transact-SQL- noch in CLR-Funktionen als Rückgabedatentyp angegeben werden.

function_body

Dieses Argument gibt an, dass mehrere Transact-SQL-Anweisungen, die zusammen keine Nebenwirkungen (z. B. das Ändern einer Tabelle) haben, den Wert der Funktion definieren. function_body wird nur in Skalarfunktionen sowie in Tabellenwertfunktionen mit mehreren Anweisungen verwendet.

In Skalarfunktionen entspricht function_body einer Reihe von Transact-SQL-Anweisungen, die zusammen einen Skalarwert ergeben.

In Tabellenwertfunktionen mit mehreren Anweisungen entspricht function_body einer Reihe von Transact-SQL-Anweisungen, die eine TABLE-Rückgabevariable auffüllen.

scalar_expression

Gibt an, dass die Skalarfunktion einen skalaren Wert zurückgibt.

Tabelle

Gibt an, dass der Rückgabewert der Tabellenwertfunktion eine Tabelle ist. Nur Konstanten und @local_variables können an Tabellenwertfunktionen übergeben werden.

In Inline-Tabellenwertfunktionen wird der TABLE-Rückgabewert durch eine einzige SELECT-Anweisung definiert. Inlinefunktionen haben keine zugeordneten Rückgabevariablen.

In Tabellenwertfunktionen mit mehreren Anweisungen ist @return_variable eine TABLE-Variable, die zum Speichern und Sammeln der Zeilen verwendet wird, die als Wert der Funktion zurückgegeben werden sollen. @ return_variable kann nur für Transact-SQL-Funktionen, nicht für CLR-Funktionen angegeben werden.

select-stmt

Die einzelne SELECT-Anweisung, die den Rückgabewert einer Inlinetabellenwertfunktion definiert.

EXTERNER NAME <method_specifier>assembly_name.class_name.method_name

Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen

Gibt die Methode an, mit der eine Assembly eine Bindung mit der Funktion herstellt. assembly_name muss einer vorhandenen Assembly in SQL Server in der aktuellen Datenbank entsprechen, wobei die Sichtbarkeit aktiviert ist. class_name muss ein gültiger Bezeichner sein und als Klasse in der Assembly existieren. Wenn die Klasse einen mit einem Namespace qualifizierten Namen hat, in dem ein Punkt ( . ) zur Trennung der Bestandteile des Namespace verwendet wird, muss der Klassenname mithilfe von Klammern ( [] ) oder mit Anführungszeichen ( "" ) getrennt werden. method_name muss ein gültiger SQL Server-Bezeichner und als statische Methode in der angegebenen Klasse vorhanden sein.

Hinweis

Standardmäßig kann SQL Server keinen CLR-Code ausführen. Sie können Datenbankobjekte, die auf CLR-Module (Common Language Runtime) verweisen, erstellen, ändern und löschen. Bevor Sie diese Verweise in SQL Server ausführen können, müssen Sie jedoch die Option clr enabled aktivieren. Verwenden Sie dazu sp_configure.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.

< > table_type_definition( { <column_definition><column_constraint> | <> computed_column_definition } [ <table_constraint> ] [ ,... n ] )

Dieses Argument definiert den Tabellendatentyp für eine Transact-SQL-Funktion. Die Tabellendeklaration schließt Spaltendefinitionen und Spalten- oder Tabelleneinschränkungen ein.

< > clr_table_type_definition ( { column_namedata_type } [ ,... n ] )

Gilt für: SQL Server 2008 (10.0.x) und höher, SQL-Datenbank (Vorschau in einigen Regionen).

Definiert die Tabellendatentypen für eine CLR-Funktion. Die Tabellendeklaration schließt nur Spaltennamen und Datentypen ein.

NULL|NICHT NULL

Nur für nativ kompilierte, benutzerdefinierte Skalarfunktionen unterstützt. Weitere Informationen dazu finden Sie unter Benutzerdefinierte Skalarfunktionen für In-Memory-OLTP.

Native-Kompilierung

Gibt an, ob eine benutzerdefinierte Funktion nativ kompiliert wird. Dieses Argument ist für nativ kompilierte, benutzerdefinierte Skalarfunktionen erforderlich.

Das Argument NATIVE_COMPILATION ist notwendig, wenn Sie die Funktion mit einer ALTER-Anweisung ändern, und kann nur verwendet werden, wenn die Funktion mit dem Argument NATIVE_COMPILATION erstellt wurde.

BEGINNEN SIE ATOMAR MIT

Nur für nativ kompilierte, benutzerdefinierte Skalarfunktionen unterstützt und erforderlich. Weitere Informationen finden Sie unter Atomare Blöcke in systemeigenen Prozeduren.

SCHEMABINDING

Das Argument SCHEMABINDING ist für nativ kompilierte, benutzerdefinierte Skalarfunktionen erforderlich.

< >function_option::= und <clr_function_option>::=

Gibt an, dass die Funktion mindestens über eine der folgenden Optionen verfügen wird.

VERSCHLÜSSELUNG

Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen

Gibt an, dass das Datenbankmodul die Katalogansichtsspalten verschlüsselt, die den Text der ALTER FUNCTION Anweisung enthalten. Mit ENCRYPTION verhindern Sie, dass die Funktion als Teil der SQL Server-Replikation veröffentlicht wird. ENCRYPTION kann nicht für CLR-Funktionen angegeben werden.

SCHEMABINDING

Gibt an, dass die Funktion an die Datenbankobjekte gebunden ist, auf die sie verweist. Wenn SCHEMABINDING angegeben ist, können an Basisobjekten keine Änderungen vorgenommen werden, die die Funktionsdefinition betreffen können. Zunächst muss die Funktionsdefinition selbst geändert oder gelöscht werden, um Abhängigkeiten in dem zu ändernden Objekt zu entfernen.

Die Bindung der Funktion an die Objekte, auf die sie verweist, wird nur bei einer der folgenden Aktionen entfernt:

  • Die Funktion wird gelöscht.

  • Die Funktion wird mithilfe der ALTER-Anweisung geändert, wobei die Option SCHEMABINDING nicht angegeben ist.

Eine Liste der Bedingungen, die erfüllt sein müssen, damit eine Funktion an ein Schema gebunden sein kann, finden Sie unter CREATE FUNCTION (Transact-SQL).

GIBT NULL BEI NULL-EINGABE ZURÜCK | BEI NULL-EINGABE AUFGERUFEN

Gibt das OnNULLCall Attribut einer skalarwertigen Funktion an. Wenn nicht angegeben, CALLED ON NULL INPUT wird dies standardmäßig impliziert. Dies bedeutet, dass der Funktionstext auch dann ausgeführt wird, wenn NULL er als Argument übergeben wird.

Wenn RETURNS NULL ON NULL INPUT in einer CLR-Funktion angegeben wird, gibt sie an, dass SQL Server zurückgeben NULL kann, wenn eines der argumente, die er empfängt, NULL ist, ohne tatsächlich den Textkörper der Funktion aufzugeben. Wenn die in <method_specifier> angegebene Methode bereits ein benutzerdefiniertes Attribut aufweist, das angibt, aber die ALTER FUNCTION Anweisung angibtRETURNS NULL ON NULL INPUTCALLED ON NULL INPUT, hat die ALTER FUNCTION Anweisung Vorrang. Das OnNULLCall Attribut kann für CLR-Tabellenwertfunktionen nicht angegeben werden.

EXECUTE AS-Klausel

Gibt den Sicherheitskontext an, in dem die benutzerdefinierte Funktion ausgeführt wird. Deshalb können Sie steuern, welches Benutzerkonto SQL Server verwendet, um Berechtigungen für eines der Datenbankobjekte zu überprüfen, auf die in der Funktion verwiesen wird.

Hinweis

EXECUTE AS kann nicht für benutzerdefinierte Inlinefunktionen angegeben werden.

Weitere Informationen finden Sie unter EXECUTE AS-Klausel (Transact-SQL).

< >column_definition ::=

Definiert den Tabellendatentyp. Die Tabellendeklaration schließt Spaltendefinitionen und Einschränkungen ein. Für CLR-Funktionen können nur column_name und data_type angegeben werden.

column_name

Der Name einer Spalte in der Tabelle. Spaltennamen müssen den Regeln für Bezeichner entsprechen und in der Tabelle eindeutig sein. column_name kann zwischen 1 und 128 Zeichen aufweisen.

data_type

Gibt den Datentyp der Spalte an. Für Transact-SQL-Funktionen sind abgesehen von timestamp alle Datentypen zulässig, einschließlich benutzerdefinierter CLR-Typen. Für CLR-Funktionen sind abgesehen von text, ntext, image, char, varchar, varchar(max) und timestamp alle Datentypen zulässig, einschließlich benutzerdefinierter CLR-Typen. Der nicht skalare Typ cursor kann weder in Transact-SQL- noch in CLR-Funktionen als Spaltendatentyp angegeben werden.

STANDARDMÄSSIGE constant_expression

Gibt den Wert an, der für die Spalte bereitgestellt wird, wenn kein Wert explizit angegeben wurde. constant_expression ist eine Konstante NULLoder ein Systemfunktionswert. DEFAULT-Definitionen können auf alle Spalten angewendet werden, mit Ausnahme von Spalten mit der IDENTITY-Eigenschaft. DEFAULT kann nicht für CLR-Tabellenwertfunktionen angegeben werden.

SORTIEREN collation_name

Gibt die Sortierung für die Spalte an. Wenn keine Sortierung angegeben ist, wird der Spalte die Standardsortierung der Datenbank zugewiesen. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden. Eine Liste und weitere Informationen finden Sie unter Windows-Sortiernamen und SQL Server-Sortiernamen.

Mit der COLLATE-Klausel können Sie nur die Sortierungen von Spalten der Datentypen char, varchar, nchar und nvarchar ändern.

COLLATE kann nicht für CLR-Tabellenwertfunktionen angegeben werden.

ROWGUIDCOL

Gibt an, dass die neue Spalte eine Spalte mit für alle Zeilen global eindeutigen Bezeichnern ist. Pro Tabelle kann nur eine Eindeutigidentifiziererspalte als ROWGUIDCOL-Spalte festgelegt werden. Die ROWGUIDCOL-Eigenschaft kann nur einer eindeutigen Identifikationsspalte zugewiesen werden.

Die ROWGUIDCOL-Eigenschaft erzwingt keine Eindeutigkeit der in der Spalte gespeicherten Werte. Sie erzeugt auch nicht automatisch Werte für neue Zeilen, die in die Tabelle eingefügt werden. Um eindeutige Werte für jede Spalte zu generieren, verwenden Sie die NEWID Funktion für INSERT Anweisungen. Ein Standardwert kann angegeben werden; NEWID Kann jedoch nicht als Standard angegeben werden.

IDENTITÄT

Gibt an, dass es sich bei der neuen Spalte um eine Identitätsspalte handelt. Wenn der Tabelle eine neue Zeile hinzugefügt wird, stellt SQL Server einen eindeutigen, inkrementellen Wert für die Spalte bereit. Identitätsspalten werden normalerweise zusammen mit PRIMARY KEY-Einschränkungen verwendet, um als eindeutiger Zeilenbezeichner für die Tabelle zu dienen. Die IDENTITY-Eigenschaft kann folgenden Spalten zugewiesen werden: tinyint, smallint, int, bigint, decimal(p,0) oder numeric(p,0) . Es kann nur eine Identitätsspalte pro Tabelle erstellt werden. Gebundene Standardwerte und DEFAULT-Einschränkungen können nicht mit einer Identitätsspalte verwendet werden. Sie müssen entweder seed und den increment oder keinen von beiden angeben. Wurden Ausgangswert und inkrementeller Wert nicht angegeben, ist der Standardwert (1,1).

IDENTITY kann nicht für CLR-Tabellenwertfunktionen angegeben werden.

Samen

Der ganzzahlige Wert, der der ersten Zeile in der Tabelle zugewiesen werden soll.

Zunahme

Der ganzzahlige Wert, der dem Startwert für aufeinanderfolgende Zeilen in der Tabelle hinzugefügt werden soll.

< >column_constraint ::= und < table_constraint>::=

Definiert die Einschränkung für eine bestimmte Spalte oder Tabelle. Für CLR-Funktionen ist der einzige zulässige Einschränkungstyp NULL. Benannte Einschränkungen sind nicht zulässig.

NULL | NICHT NULL

Bestimmt, ob Nullwerte in der Spalte zulässig sind. NULL ist nicht unbedingt eine Einschränkung, sondern kann genau wie NOT NULLangegeben werden. NOT NULL für CLR-Tabellenwertfunktionen kann nicht angegeben werden.

PRIMÄRSCHLÜSSEL

Eine Einschränkung, die die Entitätsintegrität für eine angegebene Spalte über einen eindeutigen Index erzwingt. In benutzerdefinierten Tabellenwertfunktionen kann die PRIMARY KEY-Einschränkung nur auf einer Spalte pro Tabelle erstellt werden. PRIMARY KEY kann nicht für CLR-Tabellenwertfunktionen angegeben werden.

EINZIGARTIG

Eine Einschränkung, die Entitätsintegrität für eine angegebene Spalte (oder Spalten) durch einen eindeutigen Index bereitstellt. Eine Tabelle kann mehrere UNIQUE-Einschränkungen haben. UNIQUE kann nicht für CLR-Tabellenwertfunktionen angegeben werden.

GRUPPIERT | NICHT GRUPPIERT

Gibt an, dass ein gruppierter oder nicht gruppierter Index für die PRIMARY KEY- oder UNIQUE-Einschränkung erstellt wird. PRIMARY KEY-Einschränkungen verwenden CLUSTERED, und UNIQUE-Einschränkungen verwenden NONCLUSTERED.

CLUSTERED kann nur für eine einzelne Einschränkung angegeben werden. Wenn neben CLUSTERED für eine UNIQUE-Einschränkung auch eine PRIMARY KEY-Einschränkung angegeben wird, verwendet die Einschränkung PRIMARY KEY den Wert NONCLUSTERED.

CLUSTERED und NONCLUSTERED können nicht für CLR-Tabellenwertfunktionen angegeben werden.

PRÜFEN

Eine Einschränkung, die Domänenintegrität erzwingt, indem die möglichen Eingabewerte für eine oder mehrere Spalten beschränkt wird. CHECK-Einschränkungen können nicht für CLR-Tabellenwertfunktionen angegeben werden.

logical_expression

Ein logischer Ausdruck, der TRUE oder FALSE zurückgibt.

< >computed_column_definition::=

Gibt eine berechnete Spalte an. Weitere Informationen zu berechneten Spalten finden Sie unter CREATE TABLE (Transact-SQL).

column_name

Der Name der berechneten Spalte.

computed_column_expression

Ein Ausdruck, der den Wert einer berechneten Spalte definiert.

< >index_option::=

Gibt die Indexoptionen für den PRIMARY KEY- oder UNIQUE-Index an. Weitere Informationen zu Indexoptionen finden Sie unter CREATE INDEX (Transact-SQL).

PAD_INDEX = { EIN | AUS }

Gibt die Auffüllung von Indizes an. Der Standardwert ist OFF.

FILLFACTOR = fillfactor

Gibt einen Prozentsatz an, der anzeigt, wie weit Datenbank-Engine die Blattebene jeder Indexseite während der Indexerstellung oder -änderung füllen soll. fillfactor muss ein ganzzahliger Wert zwischen 1 und 100 sein. Die Standardeinstellung ist 0.

IGNORE_DUP_KEY = { EIN | AUS }

Gibt die Fehlermeldung an, wenn ein Einfügevorgang versucht, doppelte Schlüsselwerte in einen eindeutigen Index einzufügen. Die IGNORE_DUP_KEY-Option gilt nur für Einfügevorgänge nach dem Erstellen oder Neuerstellen des Index. Der Standardwert ist OFF.

STATISTICS_NORECOMPUTE = { EIN | AUS }

Gibt an, ob Verteilungsstatistiken neu berechnet werden. Der Standardwert ist OFF.

ALLOW_ROW_LOCKS = { ON | OFF }

Gibt an, ob Zeilensperren zulässig sind. Der Standardwert ist ON.

ALLOW_PAGE_LOCKS = { ON | OFF }

Gibt an, ob Seitensperren zulässig sind. Der Standardwert ist ON.

Bemerkungen

ALTER FUNCTION kann nicht verwendet werden, um eine Skalarwertfunktion in eine Tabellenwertfunktion oder umgekehrt zu ändern. Ebenso kann ALTER FUNCTION nicht verwendet werden, um eine Inlinefunktion in eine Funktion mit mehreren Anweisungen oder umgekehrt zu ändern. ALTER FUNCTION kann nicht zum Ändern einer Transact-SQL-Funktion in eine CLR-Funktion und umgekehrt verwendet werden.

Die folgenden Service Broker-Anweisungen können nicht in die Definition einer benutzerdefinierten Transact-SQL-Funktion eingeschlossen werden:

  • BEGIN DIALOG CONVERSATION
  • END CONVERSATION
  • GET CONVERSATION GROUP
  • MOVE CONVERSATION
  • RECEIVE
  • SEND

Berechtigungen

Erfordert die ALTER-Berechtigung auf der Funktion oder auf dem Schema. Wenn die Funktion einen benutzerdefinierten Typ angibt, wird die EXECUTE-Berechtigung für den Typ benötigt.

In Microsoft Fabric können Mitglieder der Rollen "Fabric-Arbeitsbereichadministrator", "Mitglied" und "Mitwirkender" Funktionen erstellen.