PL/pgSQL: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m drobne techniczne -problem z linkime do wikibooks
m CREATE FUNCTION, DROP FUNCTION - rozszerzenie opisu, drobne merytoryczne, wikizacja
Linia 33:
 
PL/pgSQL nie jest jedynym "PL" instalowanym domyślnie dla PostgreSQL, lecz dostępnych jest wiele innych, takich jak: PL/Java,
[[PL/Perl]], plPHP, PL/Python, PL/R, PL/Ruby, PL/sh, [[PL/Tcl]].
 
== ProceduryFunkcje w PostgreSQL ==
=== Polecenie CREATE FUNCTION ===
Funkcje w SQLPostgreSQL tworzone są za pomocą polecenia CREATE FUNCTION. ProstszaUproszczona wersjaskładnia wygląda następująco:
 
<source lang="sql" line="1">CREATE FUNCTION nazwa ([rodzaj_argumentu] [nazwa_argumentu] typ_argumentu [, …]...])
RETURNS typ_wyniku
AS '
Linia 59:
Zwykły użytkownik nie ma prawa dodawać obsługi języka do bazy danych, dlatego zazwyczaj należy połączyć się jako supeużytkownik postgres, wtedy dodajemy przełącznik U z nazwą superużytkownika:
<source lang="sql">createlang -U postgres plpgsql bpfinal -L/usr/local/pgsql/lib</source>
Usunięcie języka możliwe jest również tylko dla superużytkownika przez wpisanie w konsoli [[psql]] polecenia
<source lang="sql">DROP LANGUAGE 'plpgsql';</source>
W języku PL/pgSQL nie ma znaczenia wielkość liter w słowach kluczowych takich jak BEGIN oraz układ kodu. Możliwe jest również przeciążanie funkcji. Aby użyć znaku apostrofu w definicji funkcji należy poprzedzić go dodatkowym apostrofem.
Linia 65:
CREATE FUNCTION jest tylko zapisem kodu funkcji, aby ją skompilować musi zostać wywołana, np. poprzez
<source lang="sql">SELECT nazwa_funkcji(argumenty)</source>
lub
<source lang="sql">SELECT * FROM nazwa_funkcji(argumenty)</source>
 
Bardziej zaawansowanaPełniejsza składnia polecenia CREATE FUNCTION wygląda następująco:
=== Składnia CREATE FUNCTION ===
<source lang="sql">CREATE [ OR REPLACE] FUNCTION nazwa ([rodzaj_argumentu] [nazwa_argumentu] typ_argumentu [{ DEFAULT | = } wartość_domyślna}] [,...])
[RETURNS typ_wyniku | RETURNS TABLE ( nazwa_kolumny typ_kolumny [, ...] ) ]
nazwa_funkcji ([typ_argumentu [, …]]) [RETURNS typ_wyniku]
AS ‘
DECLARE
--deklaracje zmiennych, skladnia:
nazwa [CONSTANT] typ [NOT NULL] [DEFAULT | := wartość];
/* CONSTANT sprawia, że wartości zmiennej nie można zmieniać
NOT NULL sprawia, że wartości zmiennej nie można przypisać wartości NULL*/
np.: */
n1 integer;
BEGIN
Linia 91 ⟶ 93:
END;
‘ LANGUAGE 'plpgsql';</source>
Typ zmiennej w sekcji DECLARE może być jednym z [[PostgreSQL#Typy_danych|wbudowanych typów PSQLPostgreSQL]], [[użytkownika]] lub [[odpowiadającym wierszowi w tabeli]].
==== Usuwanie funkcji ====
Funkcje usuwa się za pomocą polecenia DROP FUNCTION:
<source lang="sql">DROP FUNCTION [ IF EXISTS ] nazwa_funkcji [ ([typ_argumentu [, …]]) ], [, ...] [ CASCADE | RESTRICT ]</source>
Przykład
 
<source lang="sql">DROP FUNCION subt_one(int4);</source>
=== Aliasy zmiennych ===
Odwołania do parametrów, z którymi uruchomiono funkcję, realizuje się poprzez $1, $2 itd. Za pomocą deklaracji ALIAS można się do nich odwoływać za pomocą własnych zdefiniowanych nazw: