Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore Inserisci Persona Cerca Persona Inserisci Persona OK Successo:....
Progetto di dettaglio Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore Inserisci Persona Cerca Persona Inserisci Persona OK Successo:.... immetti(IlNome, menu.html controllaDati(IlNome, warning(IlNome,...
Progetto di dettaglio Stato 0: menu iniziale Stato 1 –Operazione: immetti –Parametri: IlNome, IlCognome, LAnnoNascita Stato 2 –Operazione: controllaDati –Parametri: IlNome, IlCognome, LAnnoNascita Stato 3 –Operazione: warning –Parametri: Messaggio errore –Parametri di giro: IlNome, IlCognome, LAnnoNascita
PER IMPLEMENTARE Il menu iniziale: posso implementarlo come un file statico Gli altri quattro stati: procedure che ricevono parametri: Immissione persona: –Definisco lo schema –Definisco la schermata iniziale –Memorizzo la procedura di immissione –Memorizzo la procedura di verifica errori –Memorizzo la procedura di visualizzazione risultato
Definizione dello schema Creo una directory ese1bdl Copio nella directory tutti i files che trovo in ~ghelli/bdl01/ese1 Mi connetto a lina, entro nella direcory, e mi connetto a sqlplus: sqlplus Da sqlplus carico il file »drop table Persone »ERROR at line 1: »ORA-00942: table or view does not exist »Table created. Per provare il funzionamento, posso caricare insert.sql e query.sql Sulla macchina locale lancio emacs/pine *.sql per provare ad aggiungere un attributo
Creazione dello stato di immissione Modifico la forma ‘menu.html’ Creo una directory sotto $HTML/bdl01/ese: –cd $HTML/bdl01/ese –mkdir Rendo menu.html visibile al web server (la directory $HTML corrisponde ad –ln -s $HOME/ese1bdl/menu.html $HTML/bdl01/ese/ /menu.html –controllare: cat $HTML/bdl01/ese/ /menu.html –controllare: sia il link che il file devono essere leggibili da tutti: Ls –l –Eseguite ‘rendileggibile’ Chiedo al docente di fare ripartire il web server (link Ammin. Web Server in Procedure per l’amministrazione) Esploro la forma creata: – /menu.ht ml
Il Menu Il tag: – specifica che: –prenota/: è una directory protetta da password, per la quale è stato specificato al Web server di attivare un agente –owa/: è il nome dell’agente attivato –mioaccount.p_ese1.immetti è il nome della procedura attivata (schema.modulo.procedura) Un tag: – specifica che alla procedura verrà passato un parametro “Cognome” inizializzato a null
Il sorgente di menu Il tag: –<FORM METHOD = "GET" ACTION = " trollaDati") specifica che: –mioaccount.p_ese1.controllaDati è il nome della procedura attivata (schema.modulo.procedura) Un tag: – specifica che alla procedura verrà passato un parametro “Cognome” inizializzato con il valore immesso nel tag
Creazione della procedura di controllo dati ed immissione La procedura è nel file ese1.sql Dopo avere dovete anche per dare al’agente ‘owa’ (che gira con l’identità dell’utente prenota) il diritto di eseguire la vostra procedura: grant execute on p_ese1 to prenota; Provate a modificare la procedura Dentro menu.html modificare ACTION da...XXXuser... a......
SQLPLUS: messaggi di errore Non confondere gli errori nel package (interfaccia) con quelli nel package body Comandi utili: –mostra errori: show err : mostra gli errori del body show err package p_pippo –(dove pippo non è il nome del file ma del package): mostra gli errori nel package –pausa ogni pagina: set pagesize 25 set pause on –lista le righe : l Messaggi tipici: –=> avete scordato di scrivere "/"
Testare le procedure Scrivete la url: val1&..&parn=valn I messaggi di errore dell’agente prenota/owa si leggono in: –$LOG/prenota.err ($ORACLE_HOME/ows/log/prenota.err) (si può leggere solo da lina) Attenzione: contiene tutti i messaggi di errore, anche relativi ad altri utenti Errori più comuni: –prenota non ha il diritto di eseguire la procedura (il messaggio dice che -non esiste-) –il nome della procedura o quello dei parametri sono stati descritti male (oveflows integer datatype) –c'è qualche parametro in più o in meno –tipi sbagliati dei parametri (numeric or value error)