name

nazwa (opcjonalnie kwalifikowana do schematu) procedury do utworzenia.

argmode

tryb argumentu:IN,INOUT lubVARIADIC. Jeśli pominięto, domyślną wartością jest IN. (OUT argumenty nie są obecnie obsługiwane dla procedur. Zamiast tego użyj INOUT.)

argname

nazwa argumentu.,

argtype

Typ(Y) danych argumentów procedury (opcjonalnie kwalifikowany jako schemat), jeśli istnieją. Typy argumentów mogą być typami bazowymi, złożonymi lub domenowymi lub mogą odwoływać się do typu kolumny tabeli.

w zależności od języka implementacji może być również dozwolone określenie „pseudo-typów”, takich jak cstring. Pseudo-typy wskazują, że rzeczywisty typ argumentu jest albo niekompletnie określony, albo poza zestawem zwykłych typów danych SQL.

do rodzaju kolumny odwołuje się pisząc table_name.,column_name%TYPE. Korzystanie z tej funkcji może czasami pomóc w uniezależnieniu procedury od zmian w definicji tabeli.

default_expr

wyrażenie, które ma być używane jako wartość domyślna, jeśli parametr nie jest określony. Wyrażenie musi być zgodne z typem argumentu parametru. Wszystkie parametry wejściowe następujące po parametrze z wartością domyślną muszą mieć również wartości domyślne.

lang_name

nazwa języka, w którym procedura jest zaimplementowana., Może to być sql, c, internal lub nazwa zdefiniowanego przez użytkownika języka proceduralnego, np. plpgsql. Umieszczenie nazwy w cudzysłowach jest przestarzałe i wymaga dopasowania wielkości liter.

TRANSFORM { FOR TYPE type_name}}

powinny mieć zastosowanie listy, które przekształcają wywołanie do procedury. Transformacje konwertuj między typami SQL i typami danych specyficznych dla języka; zobacz Tworzenie transformacji. Implementacje języka proceduralnego zwykle mają zakodowaną wiedzę na temat wbudowanych typów, więc nie muszą być tutaj wymienione., Jeśli implementacja języka proceduralnego nie wie, jak obsługiwać typ i nie zostanie dostarczona Żadna transformacja, powróci do domyślnego zachowania konwertowania typów danych, ale zależy to od implementacji.

SECURITY INVOKER
SECURITY DEFINER

SECURITY INVOKER wskazuje, że procedura ma być wykonana z uprawnieniami użytkownika, który ją wywołuje. To jest domyślne. SECURITY DEFINER określa, że procedura ma być wykonywana z uprawnieniami użytkownika, który ją posiada.,

słowo kluczowe EXTERNAL jest dozwolone dla zgodności z SQL, ale jest opcjonalne, ponieważ, w przeciwieństwie do SQL, ta funkcja dotyczy wszystkich procedur, nie tylko zewnętrznych.

aSECURITY DEFINER procedura nie może wykonać instrukcji kontroli transakcji (na przykładCOMMIT I ROLLBACK, w zależności od języka).,

configuration_parameter
value

klauzulaSET powoduje ustawienie określonego parametru konfiguracyjnego na określoną wartość po wprowadzeniu procedury, a następnie przywrócenie jego poprzedniej wartości po zakończeniu procedury. SET FROM CURRENT zapisuje wartość parametru, który jest aktualny, gdy CREATE PROCEDURE jest wykonywany jako wartość, która ma być zastosowana podczas wprowadzania procedury.,

Jeśli do procedury dołączona jest klauzulaSET, to efekty poleceniaSET LOCAL wykonanego wewnątrz procedury dla tej samej zmiennej są ograniczone do procedury: poprzednia wartość parametru konfiguracyjnego jest nadal przywracana przy zakończeniu procedury., Jednak zwykłe polecenie SET (bez LOCAL) nadpisuje klauzulę SET, podobnie jak w przypadku poprzedniego polecenia SET LOCAL: efekty takiego polecenia będą utrzymywać się po zakończeniu procedury, chyba że aktualna transakcja jest wycofywana.

Jeśli do procedury dołączona jest klauzula SET, procedura ta nie może wykonać instrukcji kontroli transakcji (na przykład COMMIT I ROLLBACK, w zależności od języka).,

Patrz SET i Rozdział 19, aby uzyskać więcej informacji o dozwolonych nazwach parametrów i wartościach.

definition

stała łańcuchowa określająca procedurę; znaczenie zależy od języka. Może to być wewnętrzna nazwa procedury, ścieżka do pliku obiektowego, polecenie SQL lub tekst w języku proceduralnym.

często pomocne jest użycie cudzysłowu dolarowego (patrz sekcja 4.1.2.4) do napisania ciągu definicji procedury, a nie zwykłej składni pojedynczego cudzysłowu. Bez cytowania dolara, wszelkie pojedyncze cudzysłowy lub ukośniki w definicji procedury muszą być unikane przez podwojenie ich.,

obj_file,link_symbol

ta forma klauzuliAS jest używana do dynamicznie ładowanych procedur języka C, gdy nazwa procedury w kodzie źródłowym języka C nie jest taka sama jak nazwa procedury SQL. Łańcuch obj_file jest nazwą pliku biblioteki współdzielonej zawierającego skompilowaną procedurę C i jest interpretowany tak, jak dla polecenia LOAD. Ciąg znaków link_symbol jest symbolem łącza procedury, czyli nazwą procedury w kodzie źródłowym języka C., Jeśli symbol dowiązania zostanie pominięty, przyjmuje się, że jest taki sam jak nazwa zdefiniowanej procedury SQL.

gdy powtarzane CREATE PROCEDURE wywołania odnoszą się do tego samego pliku obiektowego, plik jest ładowany tylko raz na sesję. Aby rozładować i przeładować plik (być może podczas tworzenia), rozpocznij nową sesję.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *