PDA

View Full Version : [PL/SQL]Procedure e Funzioni su un database


-andrea-
17-12-2009, 13:15
Ragazzi ho bisogno di una mano nella realizzazione di procedure e funzioni in PL/SQL ecco la base di dati e le relative chiavi



CLIENTI (Codice, Nome, Cognome, CF, e-Mail, Indirizzo, PIN,
Località:LOCALITA')
FILIALI (ID, Indirizzo, Località:LOCALITA')
LOCALITA' (ID, CAP, Nazione, Nome, Provincia, Regione/Stato)
INTESTATARI_CONTI Cliente:CLIENTI,Conto_corrente:CONTI_CORRENTI,
Filiale:FILIALI)
CONTI_CORRENTI ( IBAN, Residuo_mensile, Residuo_giornaliero,
Limite_mensile, Limite_giornaliero, Saldo attuale)
MOVIMENTI_BANCARI (ID, Data_valuta, Data_contabilità, Tipo,
Importo_uscita, Importo_entrata, IBAN:CONTI_CORRENTI)
BONIFICI( ID:MOVIMENTI_BANCARI, Beneficiario, Indirizzo,
Codice IBAN, Località:LOCALITA')
RICARICHE (ID:MOVIMENTI_BANCARI, Numero_cellulare, Operatore)
H_MOVIMENTI_BANCARI (ID, Data_valuta, Data_contabilità, Tipo,
Importo_uscita, Importo_entrata, IBAN:CONTI_CORRENTI)
H_BONIFICI (ID:H_MOVIMENTI_BANCARI, Beneficiario, Indirizzo, Codice
IBAN Località:LOCALITA')
H_RICARICHE (ID:H_MOVIMENTI_BANCARI, Numero_cellulare, Operatore)





• inserimento di un nuovo cliente che deve avvenire contestualmente all’apertura di un nuovo conto corrente;
• aggiornamento delle proprietà del conto corrente di un cliente;
• inserimento di un nuovo movimento bancario (generico, ricarica o bonifico);
• aggiornamento degli intestatari dei conti;
• inserimento di una nuova filiale;
• aggiornamento delle informazioni legate ai clienti;
• visualizzazione dei conti corrente con il saldo disponibile di un dato cliente;
• visualizzazione degli ultimi movimenti bancari (quelli dell’ultimo mese) di un dato cliente;
• visualizzazione delle informazioni con varie statistiche (numero di clienti, numero di conti corrente , etc...) di ogni filiale;
• visualizzazione delle informazioni con varie statistiche (numero movimenti, numero di bonifici e ricariche , totale entrate/uscite, etc...) delle attività di ogni cliente;
• spostamento delle informazioni “storiche” dei movimenti bancari su datawarehouse (circa 1 volta ogni 6 mesi);

shinya
17-12-2009, 15:03
Qual'è il problema? Queste son tutte select, insert, update... di pl/sql c'è poco da fare...

-andrea-
17-12-2009, 15:27
non riesco a capire quali sono i parametri di IN e OUT considerando che non ho nessuna esperienza con questo linguaggio,inoltre in una funzione puo ritornare un Cursore(per esempio l'ottavo punto)poichè visto che devo visualizzare un record avevo pensato di utilizzare un cursore per ovviare alla cosa

shinya
18-12-2009, 09:08
non riesco a capire quali sono i parametri di IN e OUT considerando che non ho nessuna esperienza con questo linguaggio,inoltre in una funzione puo ritornare un Cursore(per esempio l'ottavo punto)poichè visto che devo visualizzare un record avevo pensato di utilizzare un cursore per ovviare alla cosa
Premesso che tutti i tuoi dubbi sono spiegati bene nel manuale pl/sql di oracle...
Ti do un'imbeccata sull'ottavo punto, che forse è il più ostico per te...
Per tornare un cursore, devi dichiararne il tipo nella spec, quindi farai qualcosa di simile:

create or replace package my_awesome_package as

type t_generic_cursor is ref cursor;

procedure get_lista_movimenti(
p_refcur out t_generic_cursor,
p_codice_cliente in clienti.codice%type);

end my_awesome_package;
/

create or replace package body my_awesome_package as

procedure get_lista_movimenti(
p_refcur out t_generic_cursor,
p_codice_cliente in clienti.codice%type)
is
begin
open p_refcur for
select ...
from ...
where .... ; -- sostituisci i punti con la query corretta
exception
when others then
raise_application_error(-20000, 'Error ' || sql%sqlcode || ': ' || sql%sqlerrm);
end get_lista_movimenti;

end my_awesome_package;
/

Questo per fare un esempio. Per quanto riguarda i parametri IN o OUT, non c'è molto da capire. Dipende dalle specifiche... se ti dice di aggiornare le proprietà di una data tabella, i parametri in IN saranno... i parametri che corrispondono alle colonne di quella tabella.

Ma forse non capisco io cosa non capisci.... perchè sui parametri IN o OUT non c'è molto da inventarsi.

-andrea-
19-12-2009, 10:40
grazie ho risolto...:D