esercizio pl/sql e psp. lo schema create table studenti ( nome varchar2(15) not null, cognome...

17
ESERCIZIO PL/SQL e PSP

Upload: alvin-wiggins

Post on 22-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

ESERCIZIO PL/SQL e PSP

Page 2: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

LO SCHEMA

create table studenti (

nome VARCHAR2(15) not null,

cognome VARCHAR2(15) not null,

eta NUMBER

);

Page 3: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

COPIATE I FILES

• Copiate i files dalla pagina web del corso, oppure da ~ghelli/bdl03/esepsp/*

Page 4: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

CREATE LO SCHEMA

• Aprite il file per guardarlo (con notepad o wordpad):– createtable.sql

• Connettetevi al server su datatop (usando sqlplus worksheet) e fategli leggere il file (fileopen...)

• Risposta:– drop table studenti– *– ERRORE alla riga 1:– ORA-00942: table or view does not exist– Creata tabella.– Creata 1 riga....

Page 5: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

Voglio creare la pagina:

• <html><head><title>Mostra studenti</title></head> <body> <h1>Elenco studenti </h1> <table><tr> <td> <i> Cognome </i> </td> <td> <i>Nome </i> </td> </tr><tr> <td> Carto </td> <td> Lina </td> </tr><tr> <td> Mando </td> <td> Lino </td> </tr><tr> <td> Aspi </td> <td> Rina </td> </tr><tr> <td> Compi </td> <td> Tino </td> </tr> </table></body> </html>

Page 6: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

Ecco il codice PL/SQL

create or replace PROCEDURE provapl AS begin htp.prn(' <HTML> <HEAD><TITLE>Mostra studenti

</TITLE></HEAD> <BODY> <H1>Elenco studenti </H1> <TABLE> <TR> <TD> <I>Cognome</I></TD> <TD> <I>Nome </I> </TD> </TR> ');

for studente in (select nome, cognome from studenti)

loop htp.prn(' <TR> <TD> ' || studente.cognome ); htp.prn(' </TD> <TD> ' || studente.nome ); htp.prn(' </TD> </TR> ');

end loop; htp.prn(' </TABLE> </BODY> </HTML> ');end;

Page 7: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

Compilate provapl.sql

• Guardate provapl.sql

• Compilatelo da sqlplus worksheet

• Test:– //datatop.di.unipi.it/webdb/user.provapl

Page 8: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

PASSARE UN PARAMETRO

create or replace PROCEDURE provaparpl ( ilCognome IN VARCHAR2) AS

begin htp.prn(' <HTML> <HEAD../HEAD> <BODY>

<H1>Elenco studenti </H1> <TABLE> <TR> <TD> <I>Cognome</I></TD> <TD> <I>Nome </I> </TD> </TR> ');

for studente in (select nome, cognome from studenti s

where s.Cognome = ilCognome) loop

htp.prn(' <TR> <TD> ‘ || studente.cognome ); htp.prn(' </TD> <TD> ‘ || studente.nome ); htp.prn(' </TD> </TR> ');

end loop; htp.prn(' </TABLE> </BODY> </HTML> ');end;

Page 9: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

Compilate provaparpl.sql

• Guardate provaparpl.sql

• Compilatelo

• Test://datatop.di.unipi.it/webdb/user.provaparpl

Errore//da.../webdb/user.provaparpl?ilCognome=Mando

Successo//.../webdb/user.provaparpl?ilCognome=ghelli

???

Page 10: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

Un modo più semplice

<%@ page language="PL/SQL" %><HTML><HEAD><TITLE>Mostra studenti</TITLE></HEAD><BODY> <H1>Elenco studenti </H1><TABLE> <TR> <TD> <I> Cognome </I> </TD> <TD> <I> Nome </I> </TD> </TR><% for studente in

(select nome, cognome from studenti) loop %> <TR> <TD> <%= studente.cognome %> </TD> <TD> <%= studente.nome %> </TD> </TR><% end loop; %></TABLE> </BODY> </HTML>

Page 11: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

COMPILATE provapsp.psp

• Guardate provapsp.psp• Compilatelo da una command shell (run: cmd,

oppure accessoriescommand prompt)– cd C:\...\esepsp

– loadpsp –replace –user user/[email protected] provapsp.psp• "provapsp.psp": procedure "..." created.

• Test:– datatop.di.unipi.it/webdb/user.provapsp

Page 12: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

Per vedere il file generato

• http://datatop.di.unipi.it/webdb

• browse

• Schema = user; premere browse

• Show: packages, procedures & functions

• provapsp

• Show Object Information (in alto a destra)

Page 13: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

IL FILE GENERATOcreate or replace PROCEDURE provapsp AS

BEGIN NULL;htp.prn(' <HTML> <HEAD><TITLE>Mostra studenti </TITLE></HEAD> <BODY> <H1>Elenco studenti </H1> <TABLE> <TR> <TD> <I><font size=+1> Cognome </font></I> </TD> <TD> <I><font size=+1> Nome </font></I> </TD> </TR> ');for studente in (select nome, cognome from studenti)loop htp.prn(' <TR> <TD> '); htp.prn(studente.cognome); htp.prn(' </TD> <TD> '); htp.prn(studente.nome); htp.prn(' </TD> </TR> ');end loop;htp.prn(' </TABLE> </BODY> </HTML> ');END;

Page 14: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

PARAMETRO PSP

<%@ page language="PL/SQL" %><%@ plsql parameter="ilCognome" %><HTML><HEAD><TITLE>Mostra studenti</TITLE></HEAD><BODY> <H1>Elenco studenti </H1><TABLE> <TR> <TD> <I> … </I> </TD> </TR><% for studente in

(select nome, cognome from studenti where studenti.cognome = ilCognome)

loop %> <TR> <TD> … </TD> </TR><% end loop; %></TABLE> </BODY> </HTML>

Page 15: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

COMPILATE provaparpsp.psp

• Guardate provaparpsp.psp– cat provaparpsp.psp

• Compilatelo– loadpsp –replace –user user/[email protected] file.psp•“....psp": procedure "..." created.

Page 16: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

TEST

• //datatop.di.unipi.it/webdb/user.provaparpl– Errore

• //da.../webdb/user.provaparpsp?ilCognome=Mando– Successo

• //.../webdb/user.provaparpl?ilCognome=– ???

Page 17: ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );

ESERCIZI

• Modificate le procedure per mostrare anche l’età