Du skall naturligtvis visa körexempel med output där det behövs i din rapport!



Relevanta dokument
1. PLSQL 2 2. Select into

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Nya webbservern Dvwebb.mah.se

Lektion 5 HTML, CSS, PHP och MySQL

TENTAMEN DATABASKUNSKAP ITEK12

9. Anonyma block 10. Clean code och läsbarhet 11. Variabeltyper och variabeldeklaration 12. Olika loopar: Basic, while och for loop

Laboration med Internet och HTML

Integrerad i egen cup-portal Sid 1

Labb LABB 15. XML användande i praktiken. Plushögskolan Frågeutveckling inom MSSQL - SU14

Föreläsning 6: Introduktion av listor

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Innehåll Programability Del 2

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Introduktion HTML och PHP 732G16 Databaser design och programmering

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

PROGRAMMERING-Java TENTAMINA

Labora&on 7 Syfte med laborationen:

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Karlstads Universitet, Datavetenskap 1

Användarhandledning Version 1.2

Mer information om RefWorks, andra referenshanteringsprogram och hur man refererar hittar du på Linköpings universitetsbiblioteks webbsidor.

9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan,

WCMS-15, Webbutvecklare CMS

Vyer, Prepared Statements, Triggers

Innehåll. MySQL Grundkurs

1.Lär känna MS SQL Observera. Tips. Förberedelse

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Tentamen etjänster och webbprogrammering

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Databaser och Datamodellering Foreläsning IV

IT-körkort för språklärare. Modul 2: Blogg

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

TNMK30 Elektronisk publicering HT 2014 Laboration 5: PHP och MySQL

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Laboration 1 Introduktion till Visual Basic 6.0

Filbeskrivningar Eller på särskild CD skiva

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Stored procedure i ASP.NET

Inför prov 1 i webbdesign

Skapa exempeldatabasen

Webbkurs för distriktsansvariga. Stockholm den 7 och 13 september 2011

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Arbetsuppgift 1: På virtuell maskin med Ubuntuserver, skapa katalog och skapa Dockerfile. Skapa ny katalog i din hemmakatalog, med namnet webbserver.

Sidan kommer inte läggas upp någonstans utan du redovisar den för mig på något handledningstillfälle.

Tentamen i Introduktion till programmering

Att styla webbsidor. Nivå. Uppgiften

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Nätet. Uppgiften. Nivå

Övningar i SQL. SQLAccess.doc Ove Lundgren

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Starta MySQL Query Browser

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Installera din WordPress med 9 enkla steg

Manual för visionutv.net Redigera

Introduktion till MySQL

PROGRAMMERING-JAVA TENTAMINA

Projekt Foreläsning VI

Kapitel 4 Arkivmenyn Innehåll

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

Exempel på ett litet Ada-program

UPPDATERA DIN UNICO-ORGELS OPERATIVSYSTEM!

CliMate följer Tre-lager-arkitektur. Domänobjekt - domänlogiklagret. Viktiga domänklasser i CliMate. De tre lagren. Paketen i CliMate:

F06 A table form Dagens agenda

Objektorienterad programmering i Java I

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Förslag på svar Tentamen etjänster och webb- programmering

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Del 1 och 2 HTML/CSS. Webbutveckling Laboration 1 Nicklas Bostedt

Introduktion till MATLAB, med utgångspunkt från Ada

För att öppna galleriet, ange adressen

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Structured query language (SQL)

Chapter 3: Using Classes and Objects

Uppgift 1 ( Betyg 3 uppgift )

Laboration 1 - Grunderna för OOP i Java

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Programbeskrivning. Chaos på Web. Version

Ontech Control för Iphone Användarmanual Svenska

Laboration: Whitebox- och blackboxtesting

MMA132: Laboration 2 Matriser i MATLAB

Hur formuläret är ifyllt

En bortsprungen katt

Uppgifter teknik HT17 (uppdaterad v. 40)

C++ Slumptalsfunktioner + switch-satsen

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

E-posthantering med Novell Groupwise WebAccess

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Transkript:

och databprogrammering Christilinda Göstson - PL/SQL, paket och ref cursor Du skall naturligtvis visa körexempel med output där det behövs i din rapport! OBS! Denna labb redovis i labbrapport via mail till handledaren. Mailet skall förutom labbrapporten innehålla en fungerande länk till en fil med namnet lotto.html. Filen skall du publicera på din www-katalog. Exempel på länk: http://users.du.se/~pdo/ora/lotto.html/ora/lotto.html Innehåll Under denna sista labb kommer du att få jobba med PL/SQL, paket, procedurer, funktioner och ref cursor. Se till att modularisera koden till små sub-program som gör en sak. Anropa sedan sub-programmen istället för att skriva all kod i en procedur. En sådan lösning med allt på ett eller två ställen blir underkänd. Gör en ritning över hur du tänkt att det ska fungera, så blir det enklare. Du skall skapa ett paket med namnet lotto i detta paket skall du deklarera en weak ref cursor type och en procedur med namnet spela_lotto. Övriga procedurer och funktioner som behövs ligger inkapslade i lotto paketets body, och är endt åtkomliga inifrån proceduren spela_lotto. Två tabeller skall skap en med namnet lottorad och en annan med namnet lottofacit. I tabellen lottofacit kommer jag att tillhandahålla en rätt rad, dvs den tabellen innehåller 7 nummer mellan 1 och 35 som utgör den rätta raden. I tabellen lottorad skall du generera en slumpmässig lottorad med 7 unika nummer mellan 1 och 35. Tabellen får endt innehålla 7 nummer (rader) åt gången, dvs en rad per spelomgång. Detta medför att du måste rensa tabellen innan du spelar nästa gång. Du skall ha funktioner som returnerar en ref cursor med din spelade rad.samt en annan funktion som returnerar den rätta facit-raden.. Slutligen behöver du en funktion som returnerar antal rätt.. All utskrift till skärmen sköter den publika proceduren spela_lotto om. OBS! Den spelade raden och facitraden skall vara sorterade. Börja med Skapa tabellerna lottorad och lottofacit, genom att kopiera nedanstående kod: ------------------Skapa tabeller Start-------------------------------------------------- create table lottorad( nr number(6)); create table lottofacit( nr number(6)); insert into lottofacit values(3); insert into lottofacit values(7); insert into lottofacit values(11); insert into lottofacit values(35); 1(7)

och databprogrammering Christilinda Göstson insert into lottofacit values(12); insert into lottofacit values(5); insert into lottofacit values(24); commit; ------------------Skapa tabeller Slut--------------------------------------------------- När du testkör ditt lottoprogram skall en utskrift generer enligt följande: SQL> exec lotto.spela_lotto; <html> <head> <title>oracle-lotto</title> </head> <body> <div align="center"> <h1>oracle-lotto</h1> <table border="2"> <tr> <td>min rad:</td> <td>5</td> <td>11</td> <td>14</td> <td>19</td> <td>25</td> <td>28</td> <td>29</td> </tr> <tr> <td>rätt rad:</td> <td>3</td> <td>5</td> <td>7</td> <td>11</td> <td>12</td> <td>24</td> <td>35</td> <tr> <td colspan="8">antal rätt: 2</td> </tr> </table> </div> </body> </html> PL/SQL procedure successfully completed. Utskriftstexten klistrar du sedan in i ett textdokument som du döper till lotto.html. Funktionen chr(10) gör en radbrytning. Jag har som mest fått 4 rätt! Försök slå det! Du kan, istället för att klistra in all kod för paketet i SQL/Plus köra ett script. Om du har paket-koden koden i en fil labb5.sql som ligger i roten på D:,, så kan du skriva följande kommando i SQL Developer: 2(7)

och databprogrammering Christilinda Göstson sql> @ d:\labb5.sql; När du tittar på filen lotto.html i webbläsaren kommer den att se ut så här: Tips! Bygg inte allt på en gång! Fundera först igenom vilka procedurer och funktioner du behöver, skapa sedan dessa, testa att de fungerar innan du stoppar in dem i paketet. Uppgift 1 Skapa lottopaketet! Fyll i xxxxx med ditt användarnamn. Länk till din HTML-sida: http://users.du.se/~xxxxx/oracle/lotto.html 3(7)

och databprogrammering Christilinda Göstson create or replace package lotto type rc is ref cursor; procedure spela_lotto; end lotto; / create or replace package body lotto function kolla_dublett( f_nyttnr in number) return number v_count number; select count(*) into v_count from lottorad where nr = f_nyttnr; if v_count = 1 then return 1; else return 0; end if; end kolla_dublett; procedure skapa_p_lottorad v_nyttnr lottorad.nr%type; i number; v_kolla_dublett number(1); i := 1; while (i < 8) loop v_nyttnr := get_lottonr; v_kolla_dublett := kolla_dublett(v_nyttnr); if v_kolla_dublett = 0 then insert into lottorad values (v_nyttnr); i := i + 1; end if; end loop; commit; end skapa_p_lottorad; function hämta_lottofacit return lotto.rc x lotto.rc; open x for select nr from lottofacit order by nr c; return x; 4(7)

och databprogrammering Christilinda Göstson end hämta_lottofacit; procedure töm_lottorad delete from lottorad; commit; end töm_lottorad; function antal_rätt return varchar2 v_sql varchar2(200); v_count varchar2(200); v_sql:= ('select count(*) from lottofacit where (nr)in (select nr from lottorad)'); execute immediate v_sql into v_count; return v_count; end antal_rätt; function hämta_lottorad return lotto.rc x lotto.rc; open x for select nr from lottorad order by nr c; return x; end hämta_lottorad; procedure spela_lotto rc lotto.rc; v_lottorad lottorad.nr%type; v_lottofacit lottofacit.nr%type; v_rätt varchar(2); töm_lottorad; skapa_p_lottorad; v_rätt:=antal_rätt; rc := hämta_lottorad; htp.print('<html>'); htp.print('<head>'); htp.print('<meta http-equiv="content-type" content="text/html">'); htp.print('<title>oracle-lotto</title>'); htp.print('</head>'); htp.print('<body>'); htp.print('<div align="center">'); htp.print('<h1>oracle lotto</h1>'); 5(7)

och databprogrammering Christilinda Göstson htp.print('<table cellpadding="3" cellspacing="2" border="2">'); htp.print('<td>min rad:</td>'); --loopen för lottoraden loop fetch rc into v_lottorad; exit when rc%notfound; htp.print('<td>' v_lottorad '</td>'); end loop; close rc; htp.print('</tr>'); htp.print('<td>rätt rad:</td>'); --loopen för lottofacit rc:=hämta_lottofacit; loop fetch rc into v_lottofacit; exit when rc%notfound; htp.print('<td>' v_lottofacit '</td>'); end loop; close rc; htp.print('<td colspan="8">antal rätt: ' v_rätt '</td>'); htp.print('</tr>'); htp.print('</table>'); htp.print('</div>'); htp.print('</body>'); htp.print('</html>'); end spela_lotto; end lotto; / http://users.du.se/~h09chrgo/oracle/lotto.html Uppgift 2 Egna reflektioner! Skriv något om labben! Vad har du lärt dig? För svårt? För lätt? För mycket? För lite? Det hade varit bra att ha tagit upp på någon föreläsning var detta med html-utskrift. Det där var sista labben! Hopp du inte fått nog av databer Laborationen lämn in i fronter. 6(7)

och databprogrammering Christilinda Göstson SQL-kod skall skriv väl strukturerad med typsnittet Courier New 10p Pär Douhan pdo@du.se 7(7)