ALTER FUNCTION (Transact-SQL)ALTER FUNCTION (Transact-SQL)

DIESES THEMA GILT FÜR: jaSQL Server (ab 2008)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse jaParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse yesParallel Data Warehouse

Ändert eine vorhandene zuvor (durch Ausführen der CREATE FUNCTION-Anweisung) erstellte Transact-SQLTransact-SQL- oder CLR-Funktion, ohne Berechtigungen zu ändern und ohne abhängige Funktionen, gespeicherte Prozeduren oder Trigger zu beeinflussen.Alters an existing Transact-SQLTransact-SQL or CLR function that was previously created by executing the CREATE FUNCTION statement, without changing permissions and without affecting any dependent functions, stored procedures, or triggers.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

-- 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 ]   
}  

ArgumenteArguments

schema_nameschema_name
Der Name des Schemas, zu dem die benutzerdefinierte Funktion gehört.Is the name of the schema to which the user-defined function belongs.

Funktionsnamefunction_name
Die benutzerdefinierte Funktion, die geändert werden soll.Is the user-defined function to be changed.

Hinweis

Auf den Funktionsnamen müssen Klammern folgen, selbst wenn kein Parameter angegeben ist.Parentheses are required after the function name even if a parameter is not specified.

@Parameter_name@ parameter_name
Ein Parameter in der benutzerdefinierten Funktion.Is a parameter in the user-defined function. Ein oder mehrere Parameter können deklariert werden.One or more parameters can be declared.

Eine Funktion kann maximal 2.100 Parameter haben.A function can have a maximum of 2,100 parameters. Der Benutzer muss beim Ausführen einer Funktion den Wert jedes deklarierten Parameters angeben (sofern kein Standardwert für den betreffenden Parameter definiert ist).The value of each declared parameter must be supplied by the user when the function is executed, unless a default for the parameter is defined.

Geben Sie einen Parameternamen an, mit einem at-Zeichen (@) als erstes Zeichen.Specify a parameter name by using an at sign (@) as the first character. Der Parametername muss den Regeln für entsprechen Bezeichner.The parameter name must comply with the rules for identifiers. Parameter gelten lokal in der jeweiligen Funktion. Dieselben Parameternamen können in anderen Funktionen verwendet werden.Parameters are local to the function; the same parameter names can be used in other functions. Parameter können nur den Platz von Konstanten einnehmen. Sie können nicht anstelle von Tabellennamen, Spaltennamen oder Namen anderer Datenbankobjekte verwendet werden.Parameters can take the place only of constants; they cannot be used instead of table names, column names, or the names of other database objects.

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.ANSI_WARNINGS is not honored when passing parameters in a stored procedure, user-defined function, or when declaring and setting variables in a batch statement. Angenommen, eine Variable definiert ist, als char(3), und klicken Sie dann auf einen Wert größer als 3 Zeichen festgelegt, die Daten auf die definierte Größe und die Einfügung abgeschnitten oder UPDATE-Anweisung erfolgreich ausgeführt wird.For example, if a variable is defined as char(3), and then set to a value larger than three characters, the data is truncated to the defined size and the INSERT or UPDATE statement succeeds.

[ Type_schema_name.[ type_schema_name. ] Parameter_data_type] parameter_data_type
Der Parameterdatentyp und optional das Schema, zu dem der Datentyp gehört.Is the parameter data type and optionally, the schema to which it belongs. Für Transact-SQLTransact-SQL Funktionen, alle Datentypen, einschließlich von benutzerdefinierten CLR-Typen sind zulässig, mit Ausnahme der Zeitstempel -Datentyp.For Transact-SQLTransact-SQL functions, all data types, including CLR user-defined types, are allowed except the timestamp data type. Für CLR-Funktionen sind alle Datentypen, einschließlich CLR-benutzerdefinierte Typen, mit Ausnahme der zugelassen Text, Ntext, Image, und Zeitstempel Datentypen.For CLR functions, all data types, including CLR user-defined types, are allowed except text, ntext, image, and timestamp data types. Die nicht skalaren Typen Cursor und Tabelle kann nicht angegeben werden, als Datentyp eines Parameters in einem Transact-SQLTransact-SQL oder CLR-Funktionen.The nonscalar types cursor and table cannot be specified as a parameter data type in either Transact-SQLTransact-SQL or CLR functions.

Wenn Type_schema_name nicht angegeben wird, die SQL Server 2005-DatenbankmodulSQL Server 2005 Database Engine sucht nach der Parameter_data_type in der folgenden Reihenfolge:If type_schema_name is not specified, the SQL Server 2005-DatenbankmodulSQL Server 2005 Database Engine looks for the parameter_data_type in the following order:

  • Das Schema, das die Namen von SQL Server-Systemdatentypen enthältThe schema that contains the names of SQL Server system data types.

  • Das Standardschema des aktuellen Benutzers in der aktuellen DatenbankThe default schema of the current user in the current database.

  • Das dbo -Schema in der aktuellen DatenbankThe dbo schema in the current database.

    [ = Standard ][ =default ]
    Ein Standardwert für den Parameter.Is a default value for the parameter. Wenn eine Standardwert Wert definiert ist, kann die Funktion ausgeführt werden, ohne einen Wert für diesen Parameter anzugeben.If a default value is defined, the function can be executed without specifying a value for that parameter.

Hinweis

Standardparameterwerte können angegeben werden, für die CLR-Funktionen mit Ausnahme von varchar(max) und varbinary(max) Datentypen.Default parameter values can be specified for CLR functions except for varchar(max) and varbinary(max) data types.

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.When a parameter of the function has a default value, the keyword DEFAULT must be specified when calling the function to retrieve the default value. 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.This behavior is different from using parameters with default values in stored procedures in which omitting the parameter also implies the default value.

return_data_typereturn_data_type
Der Rückgabewert einer benutzerdefinierten Skalarfunktion.Is the return value of a scalar user-defined function. Für Transact-SQLTransact-SQL Funktionen, alle Datentypen, einschließlich von benutzerdefinierten CLR-Typen sind zulässig, mit Ausnahme der Zeitstempel -Datentyp.For Transact-SQLTransact-SQL functions, all data types, including CLR user-defined types, are allowed except the timestamp data type. Für CLR-Funktionen sind alle Datentypen, einschließlich CLR-benutzerdefinierte Typen, mit Ausnahme der zugelassen Text, Ntext, Image, und Zeitstempel Datentypen.For CLR functions, all data types, including CLR user-defined types, are allowed except text, ntext, image, and timestamp data types. Die nicht skalaren Typen Cursor und Tabelle kann nicht angegeben werden, als Rückgabedatentyp entweder Transact-SQLTransact-SQL oder CLR-Funktionen.The nonscalar types cursor and table cannot be specified as a return data type in either Transact-SQLTransact-SQL or CLR functions.

function_bodyfunction_body
Gibt an, dass eine Reihe von Transact-SQLTransact-SQL-Anweisungen, die zusammen keine Nebeneffekte erzeugen, z. B. Ändern einer Tabelle, den Wert der Funktion definiert.Specifies that a series of Transact-SQLTransact-SQL statements, which together do not produce a side effect such as modifying a table, define the value of the function. Function_body wird nur in Skalarfunktionen und Tabellenwertfunktionen mit mehreren Anweisungen verwendet.function_body is used only in scalar functions and multistatement table-valued functions.

In Skalarfunktionen Function_body ist eine Reihe von Transact-SQLTransact-SQL Anweisungen, die einen skalaren Wert ergeben.In scalar functions, function_body is a series of Transact-SQLTransact-SQL statements that together evaluate to a scalar value.

In mit mehreren Anweisungen Tabellenwertfunktionen Function_body ist eine Reihe von Transact-SQLTransact-SQL Anweisungen, die eine Tabelle Auffüllen gibt Variable zurück.In multistatement table-valued functions, function_body is a series of Transact-SQLTransact-SQL statements that populate a TABLE return variable.

"scalar_expression"scalar_expression
Gibt an, dass die Skalarfunktion einen skalaren Wert zurückgibt.Specifies that the scalar function returns a scalar value.

TABLETABLE
Gibt an, dass der Rückgabewert der Tabellenwertfunktion eine Tabelle ist.Specifies that the return value of the table-valued function is a table. Nur Konstanten und @ Local_variables können an Tabellenwertfunktionen übergeben werden.Only constants and @local_variables can be passed to table-valued functions.

In Inline-Tabellenwertfunktionen wird der TABLE-Rückgabewert durch eine einzige SELECT-Anweisung definiert.In inline table-valued functions, the TABLE return value is defined through a single SELECT statement. Inlinefunktionen haben keine zugeordneten Rückgabevariablen.Inline functions do not have associated return variables.

In mit mehreren Anweisungen Tabellenwertfunktionen @ Return_variable wird eine Tabellenvariable zum Speichern und Sammeln der Zeilen, die als Wert der Funktion zurückgegeben werden sollen.In multistatement table-valued functions, @return_variable is a TABLE variable used to store and accumulate the rows that should be returned as the value of the function. @Return_variable kann angegeben werden, nur für Transact-SQLTransact-SQL Funktionen, nicht für CLR-Funktionen.@return_variable can be specified only for Transact-SQLTransact-SQL functions and not for CLR functions.

SELECT-Anweisung.select-stmt
Einzelne SELECT-Anweisung, die den Rückgabewert einer Inline-Tabellenwertfunktion definiert.Is the single SELECT statement that defines the return value of an inline table-valued function.

EXTERNAL NAME <Method_specifier >assembly_name.class_name. keine Variablenargumentlisten verwendenEXTERNAL NAME <method_specifier>assembly_name.class_name.method_name
Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Gibt die Methode an, mit der eine Assembly eine Bindung mit der Funktion herstellt.Specifies the method of an assembly to bind with the function. Assembly_name übereinstimmen eine vorhandene Assembly in SQL ServerSQL Server in der aktuellen Datenbank mit eingeschalteter Sichtbarkeit.assembly_name must match an existing assembly in SQL ServerSQL Server in the current database with visibility on. CLASS_NAME muss ein gültiger SQL ServerSQL Server Bezeichner und als Klasse in der Assembly vorhanden sein.class_name must be a valid SQL ServerSQL Server identifier and must exist as a class in the assembly. Wenn die Klasse einen Namespace qualifizierten Namen verfügt, die einen Punkt verwendet (.) um die einzelnen Bestandteile des Namespace voneinander zu trennen, muss der Klassenname durch eckige Klammern begrenzt werden ([]) oder Anführungszeichen ("").If the class has a namespace-qualified name that uses a period (.) to separate namespace parts, the class name must be delimited by using brackets ([]) or quotation marks (""). keine Variablenargumentlisten verwenden muss ein gültiger SQL ServerSQL Server Bezeichner und als statische Methode in der angegebenen Klasse vorhanden sein.method_name must be a valid SQL ServerSQL Server identifier and must exist as a static method in the specified class.

Hinweis

Standardmäßig kann SQL ServerSQL Server keinen CLR-Code ausführen.By default, SQL ServerSQL Server cannot execute CLR code. Sie können erstellen, ändern und Löschen von Datenbankobjekten, die common Language Runtime-Module verweisen; Allerdings kann nicht Ausführen dieser Verweise in SQL ServerSQL Server erst nach Aktivierung der Option Clr-fähig.You can create, modify, and drop database objects that reference common language runtime modules; however, you cannot execute these references in SQL ServerSQL Server until you enable the clr enabled option. Verwenden Sie zum Aktivieren der Option Sp_configure.To enable the option, use sp_configure.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.This option is not available in a contained database.

<Table_type_definition>( { <Column_definition > <Column_constraint > | <Computed_column_definition >} [ <Table_constraint >] [ ,... n ])<table_type_definition>( { <column_definition> <column_constraint> | <computed_column_definition> } [ <table_constraint> ] [ ,...n ])
Definiert den Tabellendatentyp für eine Transact-SQLTransact-SQL-Funktion.Defines the table data type for a Transact-SQLTransact-SQL function. Die Tabellendeklaration schließt Spaltendefinitionen und Spalten- oder Tabelleneinschränkungen ein.The table declaration includes column definitions and column or table constraints.

<Clr_table_type_definition > ( { Column_nameData_type } [ ,... n ] ) Betrifft: SQL Server 2008SQL Server 2008 über SQL Server 2017SQL Server 2017, SQL-DatenbankSQL Database (Vorschau in einigen Regionen).< clr_table_type_definition > ( { column_namedata_type } [ ,...n ] ) Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, SQL-DatenbankSQL Database (Preview in some regions).

Definiert die Tabellendatentypen für eine CLR-Funktion.Defines the table data types for a CLR function. Die Tabellendeklaration schließt nur Spaltennamen und Datentypen ein.The table declaration includes only column names and data types.

NULL | NOT NULLNULL|NOT NULL
Nur für systemintern kompilierte, skalare benutzerdefinierte Funktionen unterstützt.Supported only for natively compiled, scalar user-defined functions. Weitere Informationen finden Sie unter Skalarfunktionen für In-Memory OLTP.For more information, see Scalar User-Defined Functions for In-Memory OLTP.

NATIVE_COMPILATIONNATIVE_COMPILATION
Gibt an, ob eine benutzerdefinierte Funktion systemintern kompiliert wird.Indicates whether a user-defined function is natively compiled. Dieses Argument ist erforderlich für systemintern kompilierte, skalare benutzerdefinierte Funktionen.This argument is required for natively compiled, scalar user-defined functions.

Das NATIVE_COMPILATION-Argument ist erforderlich, wenn Sie die Funktion ändern, und nur verwendet werden können, wenn die Funktion mit dem Argument NATIVE_COMPILATION erstellt wurde.The NATIVE_COMPILATION argument is required when you ALTER the function, and can only be used, if the function was created with the NATIVE_COMPILATION argument.

BEGIN ATOMIC MITBEGIN ATOMIC WITH
Unterstützt nur für systemintern kompilierte, skalare benutzerdefinierte Funktionen und erforderlich ist.Supported only for natively compiled, scalar user-defined functions, and is required. Weitere Informationen finden Sie unter ATOMIC-Blöcke.For more information, see Atomic Blocks.

SCHEMABINDINGSCHEMABINDING
Die SCHEMABINDING-Argument ist erforderlich für systemintern kompilierte, skalare benutzerdefinierte Funktionen.The SCHEMABINDING argument is required for natively compiled, scalar user-defined functions.

<Function_option >:: = und <Clr_function_option >:: =<function_option>::= and <clr_function_option>::=

Gibt an, dass die Funktion mindestens über eine der folgenden Optionen verfügen wird.Specifies the function will have one or more of the following options.

ENCRYPTIONENCRYPTION
Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Gibt an, dass die DatenbankmodulDatabase Engine die Katalogsichtspalten, die den Text der ALTER FUNCTION-Anweisung enthalten, verschlüsselt.Indicates that the DatenbankmodulDatabase Engine encrypts the catalog view columns that contains the text of the ALTER FUNCTION statement. Mit ENCRYPTION verhindern Sie, dass die Funktion als Teil der SQL ServerSQL Server-Replikation veröffentlicht wird.Using ENCRYPTION prevents the function from being published as part of SQL ServerSQL Server replication. ENCRYPTION kann nicht für CLR-Funktionen angegeben werden.ENCRYPTION cannot be specified for CLR functions.

SCHEMABINDINGSCHEMABINDING
Gibt an, dass die Funktion an die Datenbankobjekte gebunden ist, auf die sie verweist.Specifies that the function is bound to the database objects that it references. Dadurch wird verhindert, dass die Funktion geändert wird, wenn andere schemagebundene Objekte auf sie verweisen.This condition will prevent changes to the function if other schema bound objects are referencing it.

Die Bindung der Funktion an die Objekte, auf die sie verweist, wird nur bei einer der folgenden Aktionen entfernt:The binding of the function to the objects it references is removed only when one of the following actions occurs:

  • Die Funktion wird gelöscht.The function is dropped.

  • Die Funktion wird mithilfe der ALTER-Anweisung geändert, wobei die Option SCHEMABINDING nicht angegeben ist.The function is modified by using the ALTER statement with the SCHEMABINDING option not specified.

Eine Liste von Bedingungen, die erfüllt sein müssen, bevor eine Funktion schemagebunden sein kann, finden Sie unter CREATE FUNCTION ( Transact-SQL ) .For a list of conditions that must be met before a function can be schema bound, see CREATE FUNCTION (Transact-SQL).

RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUTRETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT
Gibt an, die OnNULLCall Attribut des eine Skalarwertfunktion.Specifies the OnNULLCall attribute of a scalar-valued function. Wenn das Attribut nicht angegeben ist, wird standardmäßig CALLED ON NULL INPUT verwendet.If not specified, CALLED ON NULL INPUT is implied by default. Dies bedeutet, dass der Hauptteil der Funktion ausgeführt wird, selbst wenn NULL als ein Argument übergeben wird.This means that the function body executes even if NULL is passed as an argument.

Wenn RETURNS NULL ON NULL INPUT in einer CLR-Funktion angegeben wird, bedeutet dies, dass SQL ServerSQL Server NULL zurückgeben kann, wenn eines der ihm zugestellten Argumente NULL ist, ohne den eigentlichen Hauptteil der Funktion aufzurufen.If RETURNS NULL ON NULL INPUT is specified in a CLR function, it indicates that SQL ServerSQL Server can return NULL when any of the arguments it receives is NULL, without actually invoking the body of the function. Wenn die Methode im angegebenen <Method_specifier > wurde bereits ein benutzerdefiniertes Attribut, das RETURNS NULL ON NULL INPUT, aber die ALTER FUNCTION-Anweisung gibt CALLED ON NULL INPUT, ALTER FUNCTION-Anweisung hat Vorrang vor angibt.If the method specified in <method_specifier> already has a custom attribute that indicates RETURNS NULL ON NULL INPUT, but the ALTER FUNCTION statement indicates CALLED ON NULL INPUT, the ALTER FUNCTION statement takes precedence. Die OnNULLCall Attribut kann nicht für CLR-Tabellenwertfunktionen angegeben werden.The OnNULLCall attribute cannot be specified for CLR table-valued functions.

EXECUTE AS-KlauselEXECUTE AS Clause
Gibt den Sicherheitskontext an, in dem die benutzerdefinierte Funktion ausgeführt wird.Specifies the security context under which the user-defined function is executed. Deshalb können Sie steuern, welches Benutzerkonto SQL ServerSQL Server verwendet, um Berechtigungen für eines der Datenbankobjekte zu überprüfen, auf die in der Funktion verwiesen wird.Therefore, you can control which user account SQL ServerSQL Server uses to validate permissions on any database objects referenced by the function.

Hinweis

EXECUTE AS kann nicht für benutzerdefinierte Inlinefunktionen angegeben werden.EXECUTE AS cannot be specified for inline user-defined functions.

Weitere Informationen finden Sie unter EXECUTE AS-Klausel (Transact-SQL).For more information, see EXECUTE AS Clause (Transact-SQL).

<Column_definition >:: =< column_definition >::=

Definiert den Tabellendatentyp.Defines the table data type. Die Tabellendeklaration schließt Spaltendefinitionen und Einschränkungen ein.The table declaration includes column definitions and constraints. Für CLR-Funktionen können nur Column_name und Data_type kann angegeben werden.For CLR functions, only column_name and data_type can be specified.

Spaltennamecolumn_name
Der Name einer Spalte in der Tabelle.Is the name of a column in the table. Spaltennamen müssen den Regeln für Bezeichner entsprechen und in der Tabelle eindeutig sein.Column names must comply with the rules for identifiers and must be unique in the table. Column_name kann zwischen 1 und 128 Zeichen bestehen.column_name can consist of 1 through 128 characters.

data_typedata_type
Gibt den Datentyp der Spalte an.Specifies the column data type. Für Transact-SQLTransact-SQL Funktionen, alle Datentypen, einschließlich von benutzerdefinierten CLR-Typen sind zulässig, außer Zeitstempel.For Transact-SQLTransact-SQL functions, all data types, including CLR user-defined types, are allowed except timestamp. Für CLR-Funktionen sind alle Datentypen, einschließlich CLR-benutzerdefinierte Typen, mit Ausnahme der zugelassen Text, Ntext, Image, Char, Varchar, varchar(max), und Zeitstempel. Die nicht skalaren Typ Cursor kann nicht angegeben werden, als Datentyp entweder in Spalte Transact-SQLTransact-SQL oder CLR-Funktionen.For CLR functions, all data types, including CLR user-defined types, are allowed except text, ntext, image, char, varchar, varchar(max), and timestamp.The nonscalar type cursor cannot be specified as a column data type in either Transact-SQLTransact-SQL or CLR functions.

Standard Constant_expressionDEFAULT constant_expression
Gibt den Wert an, der für die Spalte bereitgestellt wird, wenn kein Wert explizit angegeben wurde.Specifies the value provided for the column when a value is not explicitly supplied during an insert. Constant_expression ist eine Konstante, NULL oder ein systemfunktionswert.constant_expression is a constant, NULL, or a system function value. DEFAULT-Definitionen können auf alle Spalten angewendet werden, mit Ausnahme von Spalten mit der IDENTITY-Eigenschaft.DEFAULT definitions can be applied to any column except those that have the IDENTITY property. DEFAULT kann nicht für CLR-Tabellenwertfunktionen angegeben werden.DEFAULT cannot be specified for CLR table-valued functions.

COLLATE Collation_nameCOLLATE collation_name
Gibt die Sortierung für die Spalte an.Specifies the collation for the column. Wenn keine Sortierung angegeben ist, wird der Spalte die Standardsortierung der Datenbank zugewiesen.If not specified, the column is assigned the default collation of the database. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden.Collation name can be either a Windows collation name or a SQL collation name. Eine Liste und Weitere Informationen finden Sie unter Windows-Sortierungsname ( Transact-SQL ) und SQL Server-Sortierungsname ( Transact-SQL ) .For a list of and more information, see Windows Collation Name (Transact-SQL) and SQL Server Collation Name (Transact-SQL).

Die COLLATE-Klausel kann verwendet werden, so ändern Sie nur die Sortierungen von Spalten von der Char, Varchar, Nchar, und Nvarchar Datentypen.The COLLATE clause can be used to change the collations only of columns of the char, varchar, nchar, and nvarchar data types.

COLLATE kann nicht für CLR-Tabellenwertfunktionen angegeben werden.COLLATE cannot be specified for CLR table-valued functions.

ROWGUIDCOLROWGUIDCOL
Gibt an, dass die neue Spalte eine Spalte mit für alle Zeilen global eindeutigen Bezeichnern ist.Indicates that the new column is a row global unique identifier column. Nur ein "uniqueidentifier" -Spalte pro Tabelle kann als ROWGUIDCOL-Spalte gekennzeichnet werden.Only one uniqueidentifier column per table can be designated as the ROWGUIDCOL column. Die ROWGUIDCOL-Eigenschaft kann nur für zugewiesen werden eine "uniqueidentifier" Spalte.The ROWGUIDCOL property can be assigned only to a uniqueidentifier column.

Die ROWGUIDCOL-Eigenschaft erzwingt keine Eindeutigkeit der in der Spalte gespeicherten Werte.The ROWGUIDCOL property does not enforce uniqueness of the values stored in the column. Sie erzeugt auch nicht automatisch Werte für neue Zeilen, die in die Tabelle eingefügt werden.It also does not automatically generate values for new rows inserted into the table. Um eindeutige Werte für jede Spalte zu erzeugen, verwenden Sie die NEWID-Funktion in INSERT-Anweisungen.To generate unique values for each column, use the NEWID function on INSERT statements. Ein Standardwert kann angegeben werden, NEWID wird jedoch nicht als Standardwert unterstützt.A default value can be specified; however, NEWID cannot be specified as the default.

IDENTITYIDENTITY
Gibt an, dass es sich bei der neuen Spalte um eine Identitätsspalte handelt.Indicates that the new column is an identity column. Wenn der Tabelle eine neue Zeile hinzugefügt wird, stellt SQL ServerSQL Server einen eindeutigen, inkrementellen Wert für die Spalte bereit.When a new row is added to the table, SQL ServerSQL Server provides a unique, incremental value for the column. Identitätsspalten werden normalerweise zusammen mit PRIMARY KEY-Einschränkungen verwendet, um als eindeutiger Zeilenbezeichner für die Tabelle zu dienen.Identity columns are typically used together with PRIMARY KEY constraints to serve as the unique row identifier for the table. Die IDENTITY-Eigenschaft zugewiesen werden kann "tinyint", "smallint", Int, "bigint", decimal(p,0), oder numeric(p,0) Spalten.The IDENTITY property can be assigned to tinyint, smallint, int, bigint, decimal(p,0), or numeric(p,0) columns. Es kann nur eine Identitätsspalte pro Tabelle erstellt werden.Only one identity column can be created per table. Gebundene Standardwerte und DEFAULT-Einschränkungen können nicht mit einer Identitätsspalte verwendet werden.Bound defaults and DEFAULT constraints cannot be used with an identity column. Geben Sie sowohl die Ausgangswert und Inkrement oder keines von beiden.You must specify both the seed and increment or neither. Wurden Ausgangswert und inkrementeller Wert nicht angegeben, ist der Standardwert (1,1).If neither is specified, the default is (1,1).

IDENTITY kann nicht für CLR-Tabellenwertfunktionen angegeben werden.IDENTITY cannot be specified for CLR table-valued functions.

Startwertseed
Der ganzzahlige Wert, der der ersten Zeile in der Tabelle zugewiesen werden soll.Is the integer value to be assigned to the first row in the table.

Inkrementincrement
Ist der ganzzahlige Wert hinzufügen zu den Ausgangswert -Wert nachfolgende Zeilen in der Tabelle.Is the integer value to add to the seed value for successive rows in the table.

<Column_constraint >:: = und < Table_constraint >:: =< column_constraint >::= and < table_constraint>::=

Definiert die Einschränkung für eine bestimmte Spalte oder Tabelle.Defines the constraint for a specified column or table. Für CLR-Funktionen ist der einzige zulässige Einschränkungstyp NULL.For CLR functions, the only constraint type allowed is NULL. Benannte Einschränkungen sind nicht zulässig.Named constraints are not allowed.

NULL | NOT NULLNULL | NOT NULL
Bestimmt, ob Nullwerte in der Spalte zulässig sind.Determines whether null values are allowed in the column. NULL ist genau genommen keine Einschränkung, kann jedoch wie NOT NULL verwendet werden.NULL is not strictly a constraint but can be specified just like NOT NULL. NOT NULL kann nicht für CLR-Tabellenwertfunktionen angegeben werden.NOT NULL cannot be specified for CLR table-valued functions.

PRIMARY KEYPRIMARY KEY
Eine Einschränkung, die Entitätsintegrität für eine angegebene Spalte durch einen eindeutigen Index erzwingt.Is a constraint that enforces entity integrity for a specified column through a unique index. In benutzerdefinierten Tabellenwertfunktionen kann die PRIMARY KEY-Einschränkung nur auf einer Spalte pro Tabelle erstellt werden.In table-valued user-defined functions, the PRIMARY KEY constraint can be created on only one column per table. PRIMARY KEY kann nicht für CLR-Tabellenwertfunktionen angegeben werden.PRIMARY KEY cannot be specified for CLR table-valued functions.

UNIQUEUNIQUE
Eine Einschränkung, die Entitätsintegrität für eine angegebene Spalte (oder Spalten) durch einen eindeutigen Index bereitstellt.Is a constraint that provides entity integrity for a specified column or columns through a unique index. Eine Tabelle kann mehrere UNIQUE-Einschränkungen haben.A table can have multiple UNIQUE constraints. UNIQUE kann nicht für CLR-Tabellenwertfunktionen angegeben werden.UNIQUE cannot be specified for CLR table-valued functions.

CLUSTERED | NONCLUSTEREDCLUSTERED | NONCLUSTERED
Gibt an, dass ein gruppierter oder nicht gruppierter Index für die PRIMARY KEY- oder UNIQUE-Einschränkung erstellt wird.Indicate that a clustered or a nonclustered index is created for the PRIMARY KEY or UNIQUE constraint. PRIMARY KEY-Einschränkungen verwenden CLUSTERED, und UNIQUE-Einschränkungen verwenden NONCLUSTERED.PRIMARY KEY constraints use CLUSTERED, and UNIQUE constraints use NONCLUSTERED.

CLUSTERED kann nur für eine einzelne Einschränkung angegeben werden.CLUSTERED can be specified for only one constraint. 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.If CLUSTERED is specified for a UNIQUE constraint and a PRIMARY KEY constraint is also specified, the PRIMARY KEY uses NONCLUSTERED.

CLUSTERED und NONCLUSTERED können nicht für CLR-Tabellenwertfunktionen angegeben werden.CLUSTERED and NONCLUSTERED cannot be specified for CLR table-valued functions.

CHECKCHECK
Eine Einschränkung, die Domänenintegrität erzwingt, indem die möglichen Eingabewerte für eine oder mehrere Spalten beschränkt wird.Is a constraint that enforces domain integrity by limiting the possible values that can be entered into a column or columns. CHECK-Einschränkungen können nicht für CLR-Tabellenwertfunktionen angegeben werden.CHECK constraints cannot be specified for CLR table-valued functions.

Logical_Expressionlogical_expression
Ein logischer Ausdruck, der TRUE oder FALSE zurückgibt.Is a logical expression that returns TRUE or FALSE.

<Computed_column_definition >:: =<computed_column_definition>::=

Gibt eine berechnete Spalte an.Specifies a computed column. Weitere Informationen zu berechneten Spalten finden Sie unter CREATE TABLE ( Transact-SQL ) .For more information about computed columns, see CREATE TABLE (Transact-SQL).

Spaltennamecolumn_name
Der Name der berechneten Spalte.Is the name of the computed column.

computed_column_expressioncomputed_column_expression
Ein Ausdruck, der den Wert einer berechneten Spalte definiert.Is an expression that defines the value of a computed column.

<Index_option >:: =<index_option>::=

Gibt die Indexoptionen für den PRIMARY KEY- oder UNIQUE-Index an.Specifies the index options for the PRIMARY KEY or UNIQUE index. Weitere Informationen zu Indexoptionen finden Sie unter CREATE INDEX ( Transact-SQL ) .For more information about index options, see CREATE INDEX (Transact-SQL).

PAD_INDEX = { ON | OFF }PAD_INDEX = { ON | OFF }
Gibt die Auffüllung von Indizes an.Specifies index padding. Der Standardwert ist OFF.The default is OFF.

FILLFACTOR = FillfactorFILLFACTOR = fillfactor
Gibt einen Prozentsatz an, der anzeigt, wie weit DatenbankmodulDatabase Engine die Blattebene jeder Indexseite während der Indexerstellung oder -änderung füllen soll.Specifies a percentage that indicates how full the DatenbankmodulDatabase Engine should make the leaf level of each index page during index creation or change. FILLFACTOR muss ein ganzzahliger Wert zwischen 1 und 100 sein.fillfactor must be an integer value from 1 to 100. Die Standardeinstellung ist 0.The default is 0.

IGNORE_DUP_KEY = { ON | OFF }IGNORE_DUP_KEY = { ON | OFF }
Gibt die Fehlermeldung an, wenn ein Einfügevorgang versucht, doppelte Schlüsselwerte in einen eindeutigen Index einzufügen.Specifies the error response when an insert operation attempts to insert duplicate key values into a unique index. Die IGNORE_DUP_KEY-Option gilt nur für Einfügevorgänge nach dem Erstellen oder Neuerstellen des Index.The IGNORE_DUP_KEY option applies only to insert operations after the index is created or rebuilt. Der Standardwert ist OFF.The default is OFF.

STATISTICS_NORECOMPUTE = { ON | OFF }STATISTICS_NORECOMPUTE = { ON | OFF }
Gibt an, ob Verteilungsstatistiken neu berechnet werden.Specifies whether distribution statistics are recomputed. Der Standardwert ist OFF.The default is OFF.

ALLOW_ROW_LOCKS = { ON | OFF }ALLOW_ROW_LOCKS = { ON | OFF }
Gibt an, ob Zeilensperren zulässig sind.Specifies whether row locks are allowed. Der Standardwert ist ON.The default is ON.

ALLOW_PAGE_LOCKS = { ON | OFF }ALLOW_PAGE_LOCKS = { ON | OFF }
Gibt an, ob Seitensperren zulässig sind.Specifies whether page locks are allowed. Der Standardwert ist ON.The default is ON.

HinweiseRemarks

ALTER FUNCTION kann nicht verwendet werden, um eine Skalarwertfunktion in eine Tabellenwertfunktion oder umgekehrt zu ändern.ALTER FUNCTION cannot be used to change a scalar-valued function to a table-valued function, or vice versa. Ebenso kann ALTER FUNCTION nicht verwendet werden, um eine Inlinefunktion in eine Funktion mit mehreren Anweisungen oder umgekehrt zu ändern.Also, ALTER FUNCTION cannot be used to change an inline function to a multistatement function, or vice versa. ALTER FUNCTION kann nicht zum Ändern einer Transact-SQLTransact-SQL-Funktion in eine CLR-Funktion und umgekehrt verwendet werden.ALTER FUNCTION cannot be used to change a Transact-SQLTransact-SQL function to a CLR function or vice-versa.

Die folgenden Service Broker-Anweisungen können nicht enthalten sein, in der Definition einer Transact-SQLTransact-SQL User-defined Function:The following Service Broker statements cannot be included in the definition of a Transact-SQLTransact-SQL user-defined function:

  • BEGIN DIALOG CONVERSATIONBEGIN DIALOG CONVERSATION
  • END CONVERSATIONEND CONVERSATION
  • GET CONVERSATION GROUPGET CONVERSATION GROUP
  • MOVE CONVERSATIONMOVE CONVERSATION
  • RECEIVERECEIVE
  • SENDSEND

BerechtigungenPermissions

Erfordert die ALTER-Berechtigung auf der Funktion oder auf dem Schema.Requires ALTER permission on the function or on the schema. Wenn die Funktion einen benutzerdefinierten Typ angibt, wird die EXECUTE-Berechtigung für den Typ benötigt.If the function specifies a user-defined type, requires EXECUTE permission on the type.

Siehe auchSee Also

CREATE FUNCTION (Transact-SQL) CREATE FUNCTION (Transact-SQL)
DROP FUNCTION ( Transact-SQL ) DROP FUNCTION (Transact-SQL)
Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken Make Schema Changes on Publication Databases
EVENTDATA (Transact-SQL)EVENTDATA (Transact-SQL)