FUNZIONI Dichiarazione: Definizione:

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

CREAZIONE UTENTE SU ORACLE1 Pagina delle risorse: crea utente oracle ( Password:… Dora in poi, in questi lucidi,
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Sicurezza e concorrenza nelle basi di dati
Stored Procedure Function Trigger
Le funzioni UD. 8 – Lorganizzazione dei programmi p. 309 LS Tron 4TC 06/07.
Dipartimento di Matematica
Algoritmi e Programmazione
1 Semantica Operazionale di un frammento di Java: lo stato.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Le gerarchie di tipi.
Semantica Operazionale di un frammento di Java: lo stato
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
Connessione con MySQL.
Elementi di PL/SQL.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Eliana minicozzi linguaggi L1 Lezione3.
Sviluppo di Software Sicuro - S 3 Condizioni di verifica - III Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni Università
Basi di dati attive Paolo Atzeni.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Elaborazione di Franco Grivet Chin
Transazioni.
Javascript 6 Funzioni. Una funzione sarà eseguita in risposta ad un evento o ad una chiamata diretta. Le funzioni possono essere inserite comodamente.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
Chronos Jpdl Designer versione 1.0
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Basi di Dati e Sistemi Informativi SQL per Applicazioni Home page del corso:
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Astrazione procedurale ed eccezioni
Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore.
Dynamic SQL.
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
JavaScript Generalità Cos'è JavaScript?
SQL*PLUS Worksheet Permette di:
ESERCIZIO PL/SQL e PSP.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Elementi di PL/SQL. Pl/Sql Il PL/SQL (Procedural Language/Structured Query Language) è un linguaggio di programmazione procedurale di Oracle che costituisce.
PL/SQL Procedural Language/SQL estensione procedurale del linguaggio SQL.
ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );
UNITÀ LESSICALI Simboli, identificatori, costanti, commenti Simboli: Identificatori: lettere, numeri, $, _, #
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Linguaggi per basi di dati Linguaggi di definizione dei dati Utilizzati per definire gli schemi e le autorizzazioni per l’accesso Linguaggi di manipolazione.
SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.
Transcript della presentazione:

FUNZIONI Dichiarazione: Definizione: 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)]

PARAMETRI Sintassi: Tipo: 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)

PROCEDURE Dichiarazione: Definizione: procedure nome [ (parametri) ]; procedure nome [ (parametri) ] is dichiarazioni; begin comandi; exception gestori; end [nome];

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

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

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

IN, OUT, IN OUT Dichiarazione: Chiamata Vuole dire: 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)

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: Cursori e procedure pubbliche Tipi, variabili, costanti, eccezioni, cursori, procedure private Non è indispensabile

SINTASSI create package nome as end [nome]; 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 ] Lo stato di un package è legato alla sessione (connessione/disconnessione); due sessioni concorrenti vedono due stati indipendenti

DICHIARAZIONI E DEFINIZIONI DI CURSORI E 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

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_alert dbms_output: output verso sqlplus dbms_pipe utl_file: I/O su files del sistema operativo

ECCEZIONI Le eccezioni si dichiarano: Sintassi 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.

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;

ECCEZIONI INTERNE Molte hanno un numero, non un nome. Per darvi un nome: declare pochi_privilegi exception; pragma exception_init(pochi_privilegi, -1031);

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;

Eccezioni interne: esempio Gestisco l’eccezione: begin select * from acquisti into aa; end; exception when troppe_righe then … end;

I GESTORI Sintassi: exception when ecc1 or ... or ecc5 then seq di comandi; when ecc6 then when others then end raise (solo nella sezione exception) risolleva l’eccezione corrente

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

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;