FUNZIONI. Dichiarazione: Definizione:
|
|
|
- Adamo Alfonso Simoni
- 7 anni fa
- Просмотров:
Транскрипт
1 FUNZIONI Dichiarazione: function nome [ (parametri) ] return tipo; Definizione: function nome [ (parametri) ] return tipo is dichiarazioni; begin comandi; exception gestori; end [nome]; Il corpo contiene uno o più comandi return expr (meglio uno solo e meglio in coda) Se la funzione esce senza ritornare un valore vi è un errore a run-time Chiamata: nome [ (attuali)]
2 PARAMETRI Sintassi: parametri := parametro {, parametro}* parametro ::= nome [ in out in out ] tipo [ default expr ] Tipo: uno scalare (boolean, number, varchar2...) senza dimensioni nome%type, nome%rowtype possono essere in (caso default), out, in out i parametri in possono avere un valore default (default expr oppure := expr)
3 PROCEDURE Dichiarazione: procedure nome [ (parametri) ]; Definizione: procedure nome [ (parametri) ] is dichiarazioni; begin comandi; exception gestori; end [nome];
4 DEFINIZIONI DI PROCEDURE In un corpo di modulo (globali) In coda in una qualunque sezione declare Dichiarazione forward: ha la sintassi di una dichiarazione Nella base di dati: create procedure / function [(..)] is / as... È ammesso in una certa misura l overloading di funzioni i cui parametri hanno un tipo diverso
5 PARAMETRI POSIZIONALI O NOMINATI Notazione posizionale: dividi(10,5) Nominale: dividi(dividendo => 10, divisore => 5) dividi(divisore => 5, dividendo => 10) Mista: dividi(10, divisore => 5): sì dividi(dividendo => 10, 5): no dividi(10, dividendo =>5): no
6 IN, OUT, IN OUT in: caso default; è una costante; una funzione dovrebbe avere solo parametri in out: possono solo subire assegnamenti nel corpo della procedura in out: sono come variabili Non è definito se i parametri sono passati per valore o per riferimento; evitare quindi l aliasing
7 IN, OUT, IN OUT Dichiarazione: create procedure f( f1 in varchar2, f2 in out varchar2, f3 out varchar2) as body; Chiamata f(3, y, x.a) Vuole dire: f1 := 3; f2 := y; (f1 in, f2 in out) body; y := f2; x.a := f3; (f2 in out; f3 out)
8 MODULI (PACKAGES) Un modulo ha un interfaccia ed un implementazione; entrambe sono memorizzate in uno schema Vantaggi: modularità, information hiding, compilazione separata Interfaccia: Definisce: Tipi, variabili, costanti, eccezioni Dichiara: cursori, procedure/funzioni Implementazione: Definisce: Cursori e procedure pubbliche Tipi, variabili, costanti, eccezioni, cursori, procedure private Non è indispensabile
9 SINTASSI create package nome as definizioni pubbliche; dichiarazioni pubbliche di cursori; dichiarazioni di procedure pubbliche; end [nome]; create package body nome as definizioni private e definizioni dei cursori pubblici; definizioni di procedure private e pubbliche; [ begin codice di inizializzazione rieseguito per ogni sessione ] end [nome]; Lo stato di un package è legato alla sessione (connessione/disconnessione); due sessioni concorrenti vedono due stati indipendenti
10 DICHIARAZIONI E DEFINIZIONI DI CURSORI E PROCEDURE Procedure: procedure nome[(parametri)]; procedure nome[(parametri)] is...; Funzioni: function nome[(parametri)] return tipo; function nome[(parametri)] return tipo is... ; Cursori: cursor nome[(parametri)] [return tipo]; cursor nome[(parametri)] [return tipo] is query; Nei cursori la parte return tipo serve solo per poter mettere la dichiarazione nel package e la definizione nel corpo di un modulo
11 MODULI PREDEFINITI standard: contiene le funzioni standard (che quindi restano accessibili dopo un eventuale redefinizione) dbms_standard: le funzioni SQL standard dbms_sql: esecuzione dinamica di SQL dbms_output: output verso sqlplus utl_file: I/O su files del sistema operativo altri
12 ECCEZIONI Le eccezioni si dichiarano: In un modulo (visibilità globale) In un blocco (visibilità locale) Sintassi nomeecc exception; Si sollevano con un raise nomeecc Si propagano ai blocchi esterni ed alle funzioni chiamanti fino a che non trovano una sezione exception in grado di gestirle Terminata l esecuzione del gestore, il blocco termina Due eccezioni diverse con lo stesso nome sono diverse Un fallimento nella sezione declare o exception può essere solo gestito da un blocco più esterno.
13 CONDIVISIONE DI ECCEZIONI create or replace package eccp as f exception; g exception; procedure uu; end eccp; create or replace package pack2 as...; create or replace package body pack2 as procedure ss is begin raise eccp.f ; exception when eccp.g then stampap.stampa('eccezione g'); end ss; end pack2;
14 ECCEZIONI INTERNE Molte hanno un numero, non un nome. Per darvi un nome: declare pochi_privilegi exception; pragma exception_init(pochi_privilegi, -1031);
15 Eccezioni interne: esempio Errore: begin select * from acquisti into aa; end; ERRORE alla riga 1: ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at Definisco l eccezione: create or replace package p is troppe_righe exception; pragma exception_init(troppe_righe,-1422); end p;
16 Eccezioni interne: esempio Gestisco l eccezione: begin select * from acquisti into aa; end; exception when troppe_righe then end;
17 I GESTORI Sintassi: exception when ecc1 or... or ecc5 then seq di comandi; when ecc6 then seq di comandi; when others then seq di comandi; end raise (solo nella sezione exception) risolleva l eccezione corrente
18 SQLCODE ED SQLERRM sqlcode: il numero dell eccezione: utente: +1 sql: negativo, o +100 (no data found) sqlerrm: il messaggio dell eccezione: utente: User-Defined Exception sql: un qualche messaggio sqlerrm(i): il messaggio associato ad i raise_application_error(code,message): application error che si comporta come se fosse predefinito
19 RIESEGUIRE UNA TRANSAZIONE suffisso:=0; nome:=ilnome; while suffisso < 100 loop begin savepoint riparti;... insert into persone(nome,...) commit; exit; exception when dup_val_on_index then rollback to riparti; nome := ilnome tochar(suffisso); suffisso := suffisso + 1; end; end loop;
PL/SQL e PLpgSQL. Audiolezione 28b. Necessità. Soluzioni. Embedded SQL. Alfio Ferrara - Stefano Montanelli. Estensioni procedurali di SQL
Audiolezione 28b Corso di Basi di Dati e Laboratorio PL/SQL e PLpgSQL Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Estensioni procedurali di SQL Necessità Disporre di
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo
Linee guida per la programmazione di transazioni in PL/SQL
Linee guida per la programmazione di transazioni in PL/SQL Giuseppe Berio Giuseppe Berio DI - Unito 1 Esempio La transazione deve registrare l evasione di un ordine, rappresentato su più tabelle specializzate
Laboratorio di PL/SQL
Laboratorio di PL/SQL Prof. Alessandra Lumini Alma Mater Studiorum - Università di Bologna Per la sintassi PL/SQL: ORACLE 11g Rel. 2 PL/SQL Language Reference 1 Schema DB 2 1 Procedure: definizione e call
LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE
LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE Quattro parti: Gestione dati Client-Server Logica + interfaccia Logica + interfaccia Business rules Sistema di comunicazione Logica applicativa DBMS:
LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture
LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture L approccio tradizionale: uso di un linguaggio PLSQL 1.1
Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: Gestione di vincoli di integrità: Per fallimento Per modifica Auditing: Sicurezza Statistiche Valori derivati
Stored Procedure. Prof. Alfredo Pulvirenti
Stored Procedure Prof. Alfredo Pulvirenti Stored Procedure Programmi memorizzati nel DBMS che vengono eseguiti su esplicita richiesta degli utenti. PL/pgSQL di PostgreSQL PL/SQL di Oracle SQL PL di DB2
Soluzione degli esercizi PL-SQL
Soluzione degli esercizi PL-SQL Esercizio 1: Scrivere un blocco di codice che scriva in output la stringa ESAME DI SISTEMI INFORMATIVI come concatenazione di 4 variabili SET SERVEROUTPUT ON v_parte1 CONSTANT
Oracle PL/SQL. Motivazioni
Oracle PLSQL Motivazioni Supponiamo che nella gestione del database Azienda ci venga chiesto di apportare le modifiche necessarie a far sì che ad ogni impiegato possa essere assegnato, alla fine di ogni
Manuale PL/Sql - Emanuele Tertulliani
Manuale PL/Sql - Emanuele Tertulliani 2017 2 Informazioni di base PL / SQL è un linguaggio procedurale estensione del linguaggio SQL SQL statement sono nativamente integrati nel linguaggio PL/SQL ed è
Silvia Chiusano, Paolo Garza 1
Creazione di un trigger Sviluppo ed utilizzo dei trigger in Oracle Silvia Chiusano Paolo Garza CREATE TRIGGER nome_trigger modo evento [OR evento] ON tabella [REFERENCING referenza] [] [WHEN (predicato
Stored Procedure. Antonella Poggi. Dipartimento di informatica e Sistemistica Sapienza Università di Roma
Stored Procedure Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti sulla
Laboratorio di PL/SQL 3 Esercizi svolti e valutati
Laboratorio di PL/SQL 3 Esercizi svolti e valutati Prof. Alessandra Lumini Alma Mater Studiorum - Università di Bologna Per la sintassi PL/SQL: ORACLE 11g Rel. 2 PL/SQL Language Reference 1 Perché usare
PL/SQL Uso di un linguaggio procedurale per un database
PL/SQL Uso di un linguaggio procedurale per un database Roberto Basili Corso di Basi Di Dati 1 a.a. 2000-2001 Abstract Questa breve dispensa descrive piu etesamente i contenuti della esercitazione del
VISUAL BASIC FOR APPLICATION
VISUAL BASIC FOR APPLICATION LA PIATTAFORMA DI SVILUPPO GLI ELEMENTI DI VBA Finestra di progetto: mostra l elenco gerarchico dei progetti aperti e di tutti i moduli di codice e finestre di interfaccia
Come fare il debug di query SQL complicate usando le CTE scrivibili
Come fare il debug di query SQL complicate usando le CTE scrivibili 2ndQuadrant Italia PGDay Italiano 2011 Prato, 25 novembre Outline 1 Il problema Descrizione Esempi generici Esempio specifico 2 Soluzione
Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle
Versione dei trigger e PSM di Oracle Lucidi derivati da quelli di Jeffrey D Ullman Oracle usa una variante di SQL/PSM che si chiama non consente solo di creare e memorizzare procedure e funzioni, ma puo
Triggers. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza
Triggers Antonella Poggi, Claudio Corona Dipartimento di informatica e Sistemistica Università di Roma La Sapienza Progetto di Applicazioni Software Anno accademico 2008-2009 Questi lucidi sono stati prodotti
UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita
UD4 - MATLAB M-file. Efficienza degli algoritmi. Formati d uscita M-files In MatLab è possibile eseguire istruzioni contenute in file esterni; Tali file sono chiamati M-file perché devono avere estensione.m
2011 Politecnico di Torino 1
SQL per le applicazioni Esercitazione PHP e MySQL Svolgimento D B M G Passi di risoluzione creazione e popolamento della base di dati Creazione di un script SQL Passo 2 creazione di una query d interrogazione
Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo
Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL Simona Rotolo 2 Questo documento, rivolto a chi sviluppa codice in PL/Sql, è stato redatto al fine di fornire degli standard di sviluppo che aiuteranno
Capitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
SELECT INTO TIPI RECORD SELECT INTO CURSORI. righe con n <> 1 Per evitare problemi:
TIPI RECORD Sintassi: TYPE miotiporecord IS RECORD (field[,field]*); field ::= nome tipo [ [NOT NULL] := expr ] I campi possono essere scalari, record, collezioni Sono tipi di prima classe I campi si aggiornano
PHP i5 #3. By SIRI. : accesso adl DB2 IBMi
PHP i5 #3 By SIRI : accesso adl DB2 IBMi Agenda Il dialetto DB2 le estensioni PHP per DB2 connessione al DB2 esecuzioni di query su DB2 reperimento e gestione dato DB2: dialetto sql Interrogazioni sul
Come trattare il risultato di un comando SQL (relazioni) che
USO DI SQL DA PROGRAMMI: PROBLEMI 1 Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.
Oracle9i. Sono le dieci di sera, state impazzendo sul database. Indietro nel tempo con. Flashback Query
Nella versione 9i del database più diffuso al mondo sono state aggiunte molte nuove funzionalità, una di queste consente di visualizzare i dati com erano in un determinato istante del passato Indietro
2011 Politecnico di Torino 1
SQL per le applicazioni Call Level Interface Le richieste sono inviate al DBMS per mezzo di funzioni del linguaggio ospite soluzione basata su interfacce predefinite API, Application Programming Interface
Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso:
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: Gestione di vincoli di integrità: Per fallimento Per modifica Auditing: Sicurezza Statistiche Valori derivati
Fondamenti di Teoria delle Basi di Dati
Fondamenti di Teoria delle Basi di Dati Riccardo Torlone Parte 1: Introduzione Obiettivi La conoscenza della teoria delle basi di dati? No (o non solo) Piuttosto: Come si può affrontare un problema in
Modularizzazione del software
Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica
Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive
Basi di dati attive Paolo Atzeni Stefano Ceri Basi di dati attive BD con componente per la gestione di regole Evento- Condizione-Azione (regole di produzione): eventi: normalmente modifiche della base
Il DBMS Oracle. Express Edition. Donatella Gubiani e Angelo Montanari
Gubiani & Montanari Il DBMS Oracle 1 Il DBMS Oracle Express Edition Donatella Gubiani e Angelo Montanari Il DBMS Oracle Il DBMS Oracle Oracle 10g Express Edition Il DBMS Oracle (nelle sue versioni più
Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX
Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di
Qualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
