Udostępnij za pośrednictwem


ALTER FUNCTION (Transact-SQL)

Zmienia istniejące Transact-SQL lub CLR funkcja, która uprzednio została utworzona przez wykonywania instrukcja CREATE funkcja, bez zmiany uprawnień i nie wpływa na wszystkie funkcje zależne, przechowywanych procedur lub wyzwalaczy.

Topic link iconKonwencje składni języka Transact-SQL

Scalar Functions
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
[ ; ]

Inline Table-valued Functions
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 [ ) ]
[ ; ]

Multistatement Table-valued Functions
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
[ ; ]

CLR Functions
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>
[ ; ]

<method_specifier>::=
        assembly_name.class_name.method_name

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

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

Table Type Definitions
<table_type_definition>:: = 
( { <column_definition> <column_constraint> 
  | <computed_column_definition> } 
        [ <table_constraint> ] [ ,...n ]
) 

<clr_table_type_definition>:: = 
( { column_name data_type } [ ,...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 } 
}

Argumenty

  • schema_name
    Opis typu obiektu:

  • function_name
    MEDIAPASSWORD jest ciągiem znaków.

    Uwaga

    Ten identyfikator jest przejściowa i pozostaje stała, tylko wtedy, gdy plan pozostaje w pamięci podręcznej.

  • **@**parameter_name
    Parametr w funkcji zdefiniowanej przez użytkownika.Można zadeklarować jeden lub więcej parametrów.

    Czas, w którym wyzwalacz został dodany do pamięci podręcznej.last_execution_time

    Określ nazwę parametru za pomocą na podpisywanie ()@) jako pierwszy znak.Nazwa parametru musi być zgodne z zasadami identyfikatory.Liczba określająca, ile razy wyzwalacz zostało wykonane od czasu jego ostatniej został skompilowany.total_worker_time

    Uwaga

    Nośnik zabezpieczony hasłem może zostać zastąpiony tylko przez ponowne sformatowanie.Na przykład, jeśli zmienna jest zdefiniowana jako char(3), a następnie ustaw na wartość większą niż trzy znaki, danych jest obcinana do określonego rozmiaru i INSERT lub instrukcja UPDATE zakończy się pomyślnie.

  • [ type_schema_name. ] parameter_data_type
    Aby uzyskać więcej informacji zobacz temat opcję FORMAT.Dla Transact-SQL Funkcje, wszystkie typy danych, w tym typów zdefiniowanych przez użytkownika CLR są dozwolone z wyjątkiem timestamp Typ danych. Do funkcji środowiska CLR dozwolone są wszystkie typy danych, w tym CLR typów zdefiniowanych przez użytkownika, z wyjątkiem text, ntext, image, a timestamp typy danych. Typy nonscalar cursor i table Nie można określić jako typ danych parametru w obu Transact-SQL lub funkcji środowiska CLR.

    Jeśli type_schema_name nie jest określony, SQL Server 2005 Database Engine Wyszukuje parameter_data_type w następującej kolejności:

    • Jeśli są tworzone kopia zapasowa planowane do skopiowania na i przywrócić z dysku CD, określ rozmiar bloku = 2048.

    • Domyślny schemat bieżącego użytkownika w bieżącej bazie danych.

    • The dbo schema in the current database.

  • [ **=**default ]
    Liczba odczytów fizycznej wykonywane ostatniego czas wyzwalacz został wykonany.Jeśli default wartość jest określona, funkcja mogą być wykonywane bez określenia wartości dla parametru.

    Uwaga

    Można określić domyślne wartości parametrów dla funkcji środowiska CLR z wyjątkiem varchar(max) i varbinary(max) typy danych.

    Gdy parametr funkcji ma wartość domyślną, podczas wywoływania funkcji musi być określone słowo kluczowe DEFAULT w celu pobrania wartości domyślnej.To zachowanie różni się od użycia parametrów z domyślnymi wartościami w procedurach składowanych, w których pominięcie parametru wymusza użycie wartości domyślnej.

  • return_data_type
    Liczba zapisów logiczne wykonać ostatnią czas wyzwalacz został wykonany.Dla Transact-SQL Funkcje, wszystkie typy danych, w tym typów zdefiniowanych przez użytkownika CLR są dozwolone z wyjątkiem timestamp Typ danych. Do funkcji środowiska CLR dozwolone są wszystkie typy danych, w tym CLR typów zdefiniowanych przez użytkownika, z wyjątkiem text, ntext, image, a timestamp typy danych. Typy nonscalar cursor i table Nie można określić jako typ zwracanych danych w obu Transact-SQL lub funkcji środowiska CLR.

  • function_body
    Specifies that a series of Transact-SQL statements, which together do not produce a side effect such as modifying a table, define the value of the function.function_body is used only in scalar functions and multistatement table-valued functions.

    W przypadku funkcji wartość skalarna function_body jest to szereg Transact-SQL instrukcje, które razem przyjmują wartość wartość skalarna.

    W przypadku wieloma instrukcjami funkcji wycenione tabela function_body jest to szereg Transact-SQL instrukcje, które wypełnić tabela zwracać zmienną.

  • scalar_expression
    Określa, czy włączono sum kontrolnych kopia zapasowa.

  • Liczba odczytów logiczne wykonywane podczas ostatniego wyzwalacz został wykonany.
    min_odczytów_logicznychTylko stałe i **@**local_variables mogą być przekazywane do funkcji wycenione tabela.

    maks_odczytów_logicznychMaksymalna liczba logiczne odczytuje ten wyzwalacz ma nigdy wykonywane podczas wykonywania pojedynczych.

    W przypadku wieloma instrukcjami funkcja wycenione tabeli **@return_variable jest używany do przechowywania i kumulują się wierszy, które powinny być zwracane jako wartość funkcja zmienną Tabela.@**return_variable można określić tylko dla Transact-SQL Funkcje, a nie dla środowiska CLR działa.

  • select-stmt
    Upływający czas w mikrosekundach najbardziej ostatnio zakończonych realizacji tego wyzwalacza.

  • < EXTERNAL NAME method_specifier >assembly_name.class_name. method_name
    Specifies the method of an assembly to bind with the function.assembly_name must match an existing assembly in SQL Server in the current database with visibility on.class_name must be a valid SQL Server identifier and must exist as a class in the assembly.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 ("").method_name must be a valid SQL Server identifier and must exist as a static method in the specified class.

    Uwaga

    W następującym przykładzie polecenie wyświetla listę numer zadania dołączony do SQL Server harmonogram. Można tworzyć, modyfikować i upuszczać obiekty bazy danych, które odwołują się do modułów środowiska wykonawczego języka wspólnego, jednak nie można wykonać te odwołania w SQL Server dopóki nie zostanie włączone Opcja CLR włączone.The sys.dm_exec_query_transformation_statsdynamiczny widok zarządzania is identified for informational purposes only.

  • <table_type_definition>( { <column_definition> <column_constraint>   | <computed_column_definition> }   [ <table_constraint> ] [ ,...n ])
    Określa typ danych tabela Transact-SQL Funkcja. xtype

  • < clr_table_type_definition > ( { column_namedata_type } [ ,...n ] )
    xusertypeIdentyfikator rozszerzonego zdefiniowanej przez użytkownika typu danych.

<function_option>:: = i <clr_function_option>::=

suma kontrolna kopia zapasowa znajduje się na nośniku kopii zapasowych, nie dla stron bazy danych.

  • SZYFROWANIE
    Oznacza, że program Database Engine szyfruje kolumny widoku wykazu, który zawiera tekst instrukcji ALTER FUNCTION.Użycie opcji ENCRYPTION uniemożliwia opublikowanie funkcji jako części replikacji programu SQL Server.Opcja ENCRYPTION nie może zostać określona dla funkcji CLR.

  • SCHEMABINDING
    0 = Nonprocedure wpisówOkreśla, czy operacji tworzenia kopia zapasowa zatrzymuje, czy jest kontynuowane po wystąpią błąd suma kontrolna strona.

    Przesunięcie do wiersza, w której znajduje się w tej kolumnie.

    • collationid

    • Identyfikator sortowanie kolumna.

    Aby uzyskać listę warunków, które muszą zostać spełnione, zanim funkcja może być związany schematu Zobacz CREATE funkcja języka Transact-SQL).

    0x80 = kolumny kolumna tożsamości.

  • RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT
    Określa atrybut OnNULLCall funkcji skalarnej.Jeśli nie jest określony, domyślnie jest wybierana instrukcja CALLED ON NULL INPUT.To oznacza, że treść funkcji jest wykonywana nawet wtedy, gdy jako argument zostanie przekazana wartość NULL.

    Zwraca wartość NULL na wejście NULL jest określony w funkcja środowiska CLR, wskazuje że SQL Server może zwracać wartość NULL, gdy którykolwiek z argumentów odbiera ma wartość NULL, bez wywoływania faktycznie treść funkcji. Jeśli określono metoda <method_specifier> jest już niestandardowy atrybut, który wskazuje, zwraca wartość NULL na wejście NULL, ale w instrukcja ALTER funkcja wskazuje, o NAZWIE ON INPUT NULL, pierwszeństwo ma opcja instrukcja ALTER funkcja. The OnNULLCall atrybut cannot be specified for CLR tabela-valued functions.

  • 0 = Noncomputed
    Określa kontekst zabezpieczeń, w którym jest wykonywana funkcja zdefiniowana przez użytkownika.Dlatego można sterować, które konto użytkownika jest używane przez program SQL Server do sprawdzania poprawności uprawnień do dowolnych obiektów bazy danych, do których odwołuje się funkcja.

    Uwaga

    Nazwa sortowanie kolumna.

    Aby uzyskać więcej informacji zobacz EXECUTE AS Clause (Transact-SQL).

< column_definition >::=

Definiuje typ danych tabeli.Deklaracja tabeli zawiera definicje kolumn oraz ograniczenia.Dla funkcji CLR można określić jedynie parametry column_name i data_type.

  • column_name
    To nazwa kolumna w tabela.Column names must comply with the rules for identifiers and must be unique in the table.column_name can consist of 1 through 128 characters.

  • data_type
    Określa typ danych kolumna.Dla Transact-SQL Funkcje, wszystkie typy danych, w tym typów zdefiniowanych przez użytkownika CLR są dozwolone z wyjątkiem timestamp. Do funkcji środowiska CLR dozwolone są wszystkie typy danych, w tym CLR typów zdefiniowanych przez użytkownika, z wyjątkiem text, ntext, image, char, varchar, varchar(max), a timestampTe typu nonscalar cursor Nie można określić jako typ danych kolumna w obu Transact-SQL lub funkcji środowiska CLR.

  • W zależności od sposobu zdefiniowania treści funkcja wycenione tabela funkcja mogą być sklasyfikowane jako funkcja wbudowanych lub multi-instrukcja.constant_expression
    Specifies the value provided for the column when a value is not explicitly supplied during an insert.constant_expression is a constant, NULL, or a system function value.To nazwa schematu, do której należy dany funkcja zdefiniowanej przez użytkownika.Jest nazwą funkcja zdefiniowanej przez użytkownika.

  • collation_name SORTOWANIE
    Określa sortowanie dla kolumny.Jeżeli nie określono, do kolumny jest przypisywane domyślne sortowanie bazy danych.Nazwa sortowania może być nazwą sortowania systemu Windows lub nazwą sortowania SQL.Aby uzyskać listę oraz więcej informacji, zobacz Windows Collation Name (Transact-SQL) i SQL Server Collation Name (Transact-SQL).

    Klauzula COLLATE może służyć do zmiany ustawień sortowania tylko z kolumn char, varchar, nchar, a nvarchar typy danych.

    Może być deklarowana na jeden lub więcej parametrów.

  • ROWGUIDCOL
    Nie ma znaczenia.Tylko jeden uniqueidentifierKolumna tabela może być wyznaczony jako kolumna ROWGUIDCOL. Właściwość ROWGUIDCOL mogą być przypisywane tylko do uniqueidentifier Kolumna.

    Właściwość ROWGUIDCOL nie wymusza unikatowość wartości przechowywane kolumna.Określ nazwę parametru za pomocą znak (@) jako pierwszego znaku.Nazwa parametru muszą być zgodne z regułami identyfikatorów.Parametry są lokalne do funkcja, te same nazwy parametrów mogą być używane w innych funkcja.

  • TOŻSAMOŚĆ
    Wskazuje, że nowa kolumna kolumna tożsamości.Po dodaniu nowego wiersza w tabela SQL Server zawiera unikatowy, przyrostowych wartości dla kolumna. ANSI_WARNINGS nie są honorowane podczas przekazywania parametrów w procedurze przechowywanej, funkcja zdefiniowanej przez użytkownika lub przy deklarowaniu i zestaw zmiennych w instrukcja partia.właściwość tożsamości Mogą być przypisane do tinyint, smallint, int, bigint, decimal(p,0), lub numeric(p,0) kolumny. Tylko jeden kolumna tożsamości mogą być tworzone na tabela.Wartości domyślne związane i DEFAULT ograniczeń nie mogą być używane z tożsamości kolumna.Należy określić obie seed i increment lub żadna. Jeśli żadna z nich nie zostanie określony, wartość domyślna to (1,1).

    Czy typ danych parametru, a opcjonalnie schematu, do której należy.

    • seed
      Wartość całkowita, która ma zostać przypisana do pierwszego wiersza tabeli.

    • increment
      Wartość całkowita, która ma być dodawana do wartości seed dla kolejnych wierszy w tabeli.

<Typy nonscalar > i <, nie można określić jako typ danych parametru w obu > lub funkcji środowiska CLR.

Definiuje ograniczenia dla określonej kolumny lub tabeli.Dla funkcji CLR jedynym dozwolonym typem ograniczenia jest NULL.Nazwane ograniczenia są niedozwolone.

  • WARTOŚCI NULL | NIE JEST PUSTY
    Określa, czy w kolumnie są dozwolone wartości null.Wartość NULL nie jest ścisłym ograniczeniem, ale może być określone jako po prostu NOT NULL.Ograniczenie NOT NULL nie może zostać określone dla funkcji CLR zwracających tabele.

  • KLUCZ PODSTAWOWY
    Ograniczenie wymuszające integralność jednostki dla określonej kolumny za pośrednictwem unikatowego indeksu.W zdefiniowanych przez użytkownika funkcjach zwracających tabele ograniczenie PRIMARY KEY można utworzyć tylko dla jednej kolumny na tabelę.Ograniczenie PRIMARY KEY nie może zostać określone dla funkcji CLR zwracających tabele.

  • UNIKATOWE
    Jest ograniczenie, które zapewnia integralność obiekt dla określonej kolumna lub kolumn do unikatowego indeksu.Tabela może zawierać wiele ograniczeń UNIQUE.TYLKO DO ODCZYTU

  • ZGROMADZONE | NIEKLASTROWANY
    Wskazuje, że klastrowany lub nieklastrowany indeks jest tworzony dla ograniczenia klucz podstawowy lub UNIQUE.Wskazuje, że parametr nie mogą być aktualizowane ani modyfikowane w definicji funkcja.

    Jeśli typ parametru jest typ zdefiniowany przez użytkownika tabela, należy określić tylko do odczytu.Jest to wartość zwracana wartość skalarna funkcja zdefiniowanej przez użytkownika.

    Ograniczenia CLUSTERED i NONCLUSTERED nie mogą zostać określone dla funkcji CLR zwracających tabele.

  • SPRAWDŹ
    Ograniczenie wymuszające integralność domeny przez ograniczenie dopuszczalnych wartości, które mogą zostać wprowadzone w kolumnie lub kolumnach.Ograniczenia CHECK nie mogą zostać określone dla funkcji CLR zwracających tabele.

    • logical_expression
      To wyrażenie logiczne, które zwraca wartość TRUE lub FALSE.

<computed_column_definition>::=

Określa kolumnę obliczaną.Aby uzyskać więcej informacji na temat kolumn obliczanych, zobacz CREATE TABLE (Transact-SQL).

  • column_name
    Nazwa kolumny obliczanej.

  • computed_column_expression
    To wyrażenie, który definiuje wartość kolumna obliczana.

<index_option>::=

Określa wartość wartość skalarna, zwracana przez funkcja wartość skalarna.Aby uzyskać więcej informacji na temat opcji indeksu zobacz CREATE INDEX (języka Transact-SQL).

  • TABELA
    Określa, że wartość zwracaną przez funkcja zwracająca tabelę jest tabela.Wartością domyślną jest OFF.

  • FILLFACTOR = fillfactor
    Specifies a percentage that indicates how full the Database Engine should make the leaf level of each index page during index creation or change.fillfactor must be an integer value from 1 to 100.Wartość domyślna to 0.

  • Wbudowane funkcje skojarzone zmiennych zwrotu nie jest konieczne.
    Określa odpowiedź o błędzie podczas próby wstawienia duplikat operację wstawiania klucz wartości do unikatowego indeksu.Opcja IGNORE_DUP_KEY dotyczy tylko wstawianie operacji po utworzeniu indeksu lub ponownie.Wartością domyślną jest OFF.

  • STATISTICS_NORECOMPUTE = { ON | OFF }
    Określa, czy statystyki dystrybucji są ponownie obliczane.Wartość domyślna to OFF.

  • Czy pojedynczej instrukcja SELECT określa wartość zwracaną przez wbudowanego funkcja zwracająca tabelę.
    Określa, czy są dozwolone blokady wierszy.Wartość domyślna to ON.

  • Określa kolejność, w którym są są zwracane wyniki z funkcja wycenione tabela.
    Aby uzyskać więcej informacji zobacz sekcję "Wskazówki na używanie kolejność sortowania," w dalszej części tego tematu.Wartością domyślną jest włączone.

Remarks

Nie można użyć opcji ALTER FUNCTION w celu zmienienia funkcji skalarnej na funkcję zwracającą tabelę lub vice versa.Opcji ALTER FUNCTION nie można także użyć do zmieniania funkcji śródwierszowej na funkcję składającą się z wielu instrukcji lub vice versa.Opcji ALTER FUNCTION nie można użyć w celu zmienienia funkcji Transact-SQL na funkcję CLR lub vice versa.

Poniższych instrukcji programu Service Broker nie można dołączyć do definicji funkcji Transact-SQL zdefiniowanych przez użytkownika:

  • POCZĄTKOWY OKNACH KONWERSACJI

  • KONIEC KONWERSACJI

  • POLECENIE GET grupa konwersacji

  • PRZENOSZENIE KONWERSACJI

  • ODBIERANIE

  • ADBO

Uprawnienia

To jest w przybliżeniu określonej wartości procentowej, na przykład z STATS = 10, jeżeli ilość ukończona jest 40 procent, opcja może być wyświetlany procent 43.Jeśli funkcja określa typ zdefiniowany przez użytkownika, wymaga uprawnienie wykonać typu.