PDA

View Full Version : [PostGreSql 8.1]Ma.. le stored procedure?


RaouL_BennetH
04-11-2008, 10:11
Ciao a tutti :)

Sto cercando invano ( o forse nel posto sbagliato) documentazione in merito alle stored procedure.

Tutto ciò che ho trovato sul sito ufficiale è un riferimento alla creazione di funzioni.

Avreste da passarmi qualcosa dato che purtroppo non ho a disposizione una buona connessione e le ricerche in internet stamattina sono penose e snervanti?

Grazie mille :)

RaouL.

shinya
04-11-2008, 11:07
Primo risultato cercando "postgresql stored procedure" su google:

http://www.postgresql.org/docs/8.0/interactive/plpgsql.html

RaouL_BennetH
04-11-2008, 12:45
Primo risultato cercando "postgresql stored procedure" su google:

http://www.postgresql.org/docs/8.0/interactive/plpgsql.html

Si, quello che avevo trovato anche io dove si parla appunto di funzioni.

Deduco quindi che siano la stessa cosa (funzioni/stored procedure) per postgresql ?



Grazie mille :)

RaouL.

shinya
04-11-2008, 13:47
Boh, ho dato una letta veloce alla documentazione...sembra non ci siano differenziate funzioni e procedure (cosi come invece lo sono in pl/sql)... in postgresql sembra basti creare una funzione che ritorna 'void' se vuoi simulare il comportamento della classica procedura pl/sql...

RaouL_BennetH
05-11-2008, 12:48
Qualcuno sarebbe in grado di fornirmi un esempio per generare una funzione che inserisca semplicemente dei valori in una tabella?

Grazie mille :)

RaouL.

RaouL_BennetH
05-11-2008, 15:54
ok..

sono riuscito a fare:



CREATE OR REPLACE FUNCTION insert_anagrafica(p1 varchar, p2 varchar, p3 date) RETURNS VOID AS $$

DECLARE

temp_cognome ALIAS FOR $1;
temp_nome ALIAS FOR $2;
temp_dataNascita ALIAS FOR $3;

BEGIN

INSERT INTO anagrafica(cognome, nome, dataNascita)
VALUES
(temp_cognome, temp_nome, temp_dataNascita);

END;

$$

LANGUAGE plpgsql;



Funziona correttamente.
.. però..
alla tabella anagrafica è relazionata un'altra tabella: per es.: numeri_telefono
sulla pk di anagrafica (id_persona).

Chiedo quindi.. è possibile fare delle insert multiple all'interno di una stored procedure oppure devo usare le transazioni?

O .. ancora: è possibile usare transazioni all'interno di stored procedure?

Grazie mille :)

RaouL.

cdimauro
05-11-2008, 21:49
Certo che MySQL e PostgreSQL fanno proprio a gara per la sintassi più schifosa da usare per le stored procedure...
ok..

sono riuscito a fare:



CREATE OR REPLACE FUNCTION insert_anagrafica(p1 varchar, p2 varchar, p3 date) RETURNS VOID AS $$

DECLARE

temp_cognome ALIAS FOR $1;
temp_nome ALIAS FOR $2;
temp_dataNascita ALIAS FOR $3;

BEGIN

INSERT INTO anagrafica(cognome, nome, dataNascita)
VALUES
(temp_cognome, temp_nome, temp_dataNascita);

END;

$$

LANGUAGE plpgsql;



Funziona correttamente.
.. però..
alla tabella anagrafica è relazionata un'altra tabella: per es.: numeri_telefono
sulla pk di anagrafica (id_persona).

Chiedo quindi.. è possibile fare delle insert multiple all'interno di una stored procedure oppure devo usare le transazioni?
Puoi farlo.
O .. ancora: è possibile usare transazioni all'interno di stored procedure?

Grazie mille :)

RaouL.
L'esecuzione delle istruzioni di una S.P. avviene sempre dentro una transazione.