HELIA 1 (17) Outi Virkki Tietokantasuunnittelu 21.11.2000

Samankaltaiset tiedostot
Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

HELIA 1 (11) Outi Virkki Tiedonhallinta

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Näkymät ja tiedon suojaus

EXEC SQL BEGIN DECLARE SECTION

Näkymät ja tiedon suojaus

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

HELIA 1 (14) Outi Virkki Tiedonhallinta

1. Omat operaatiot 1.1

ADA. Ohjelmointikieli. Ryhmä 5 Henna Olli, Päivi Hietanen

Java ja tietokannan käsittely (JDBC)

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tunnetko nämä PL/SQL:n piirteet? Kari Aalto Saariston IT

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

Makrojen mystinen maailma lyhyt oppimäärä

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

Tietokannat II -kurssin harjoitustyö

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokantaohjelmointi Harri Laine 1. SQL:n käyttö ohjelmissa

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

3. Taulujen määrittely ja muuttaminen

Muistutus aikatauluista

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

CSE-A1200 Tietokannat

Tietohakemisto ja Transaktionkäsittely

SQL - STRUCTURED QUERY LANGUAGE

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Ohjelmoinnin perusteet Y Python

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Harjoitustyö: virtuaalikone

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

HELIA 1 (12) Outi Virkki Tiedonhallinta

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokannan konversio

Kielioppia: toisin kuin Javassa

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Ruokahalu kasvaa syödessä lisää makrokielen herkkuja

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Dynaamista ja joustavaa ohjelmointia - maukasta makrokielellä

Opiskeluoikeuksien maaran tiedonkeruu

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Ohjelmoinnin peruskurssien laaja oppimäärä

käännös käännösvaiheessa tarkasettaan linkitys

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Tietokantakurssit / TKTL

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

TIEDONHALLINTA - SYKSY Luento 12. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Java-kielen perusteet

Olio-ohjelmointi Javalla

Matlabin perusteita Grafiikka

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

A TIETORAKENTEET JA ALGORITMIT

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

SIMULINK S-funktiot. SIMULINK S-funktiot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Oracle-tietokanta. Riku Nykänen 1/2010

RDBMS - Yhteyskäytännöt

1. Olio-ohjelmointi 1.1

Transkriptio:

HELIA 1 (17) Luento 2.8 Talletetut rutiinit... 2 Talletetut rutiinit SQL3:ssa... 3 Ulkopuoliset rutiinit... 4 Talletetut rutiinit Oraclessa... 7 Ohjelmakoodista... 8 Koodin virheet... 8 Virhetilanteiden käsittely ohjelmassa... 9 Riippuvuudet... 10 Proseduurit... 11 Funktiot... 12 Paketit / Packages... 13 PL/SQL:stä... 14

HELIA 2 (17) Talletetut rutiinit Tietokantaan tallennettu ohjelmamoduuli 1. Modulaarisempi ohjelmointi Yhteiskäyttöiset ohjelmamoduulit esim. herätetoiminnoissa Transaktion kapselointi 2. Abstraktien (käyttäjän määrittelemien) tietotyyppien metodien määrittely Ä olio-ohjelmointi Ä Ei SQL-92:ssa Å Toteutukset erilaisia eri tiedonhallintajärjestelmissä Ä Mukana SQL 3:ssa (Persistent Stored Modules / SQL/PSM) 1. Rakenteet joiden avulla tietokantaan voidaan tallentaa käännettyjä ja optimoituja ohjelmamoduuleita 2. Ohjelmointikieli, jolla moduulit tehdään 3. Käytäntö, jolla moduuleita kutsutaan Proseduurit ja funktiot Ä funktio palauttaa arvon, proseduuri ei itsenäinen kutsutaan eksplisiittisesti (suoraan) vaati suoritusoikeuden myönnön (Oraclessa)

HELIA 3 (17) Talletetut rutiinit SQL3:ssa { CREATE PROCEDIRE CREATE FUNCTION } <Routine_name> ( [ <Parameter_list>] ) [ RETURNS <data_type> [ <result cast> ] [ LANGUAGE {ADA C COBOL FORTRAN MUMPS PASCAL PLI SQL} ] [ DETERMINISTIC NOT DETERMINISTIC ] [ NO SQL CONTAINS SQL READS SQL DATA MODIFIES SQL DATA ] [ RETURN NULL ON NULL INPUT CALL ON NULL INPUT ] [ DYNAMIC RESULT SETS <unsigned_integer> <routine_body> Huomioita eheyssäänöistä kutsuttavien rutiinien on oltava deterministisiä palauttavat tietyillä parametreillä aina saman tuloksen Jos funktio tai proseduuri voi samoilla parametreillä kutsuttaessa palauttaa eri tuloksia eri ajankohtina, se ei ole deterministinen Null-arvojen käsittely rutiinissa Kursorien määrä proseduurissa

HELIA 4 (17) Esim. CREATE PROCEDURE Reset_table_1 () UPDATE table_1 SET column_1 = 0; CALL Reset_table_1 CREATE FUNCTION Pii () RETURNS DECIMAL(3,2) RETURN 3,14; INSERT INTO table_1 (decimal_column) VALUES (Pii()); Vakion määrittely SQL:ssä Ulkopuoliset rutiinit CREATE PROCEDURE Routine_1 () LANGUAGE C NO SQL EXTERNAL NAME c_rutiini_1 ;

HELIA 5 (17) CREATE PROCEDURE otto ( p_maara DECIMAL(6,2), p_hlo_id INTEGER, p_tili_id INTEGER ) CONTAINS SQL BEGIN UPDATE tili SET arvo = arvo p_maara WHERE tili_id = p_tili_id; UPDATE hlo SET kassa = kassa p_maara WHERE hlo_id = p_hlo_id; INSERT INTO tapahtuma VALUES ( p_tili_id, otto, p_maara, p_hlo_id, sysdate ); END;

HELIA 6 (17) ALTER { PROCEDURE FUNCTION ROUTINE METHOD } < Routine_name > {NAME LANGUAGE <null_clause> DYNAMIC RESULT SETS <unsigned_integer> } { RESTRICT CASCADE } ALTER PROCEDURE Routine_1 NAME Routine_2 RESTRICT; ei suositella käytettäväksi, jos jokin toinen objekti käyttää ko. rutiinia... DROP {PROCEDURE FUNCTION ROUTINE METHOD } <Routine_name> {RESTRICT CASCADE } DROP PROCEDURE Routine_2 RESTRICT;

HELIA 7 (17) Talletetut rutiinit Oraclessa Ä Sekä lähdekoodi että käännetty ohjelma tallennetaan tietohakemistoon: 1. Objektin nimi 2. Lähdekoodi 3. Parsinta 4. Pseudo-koodi 5. Riippuvuustiedot Ä Rutiinin nimen on oltava ainutkertainen ko. schemassa Å DESCRIBE <object_name> Å DESC <object_name> + Kyselyt tietohakemistotauluihin (palataan jatkossa) esim.... Ä Tietokantatoimenpiteet suoritetaan omistajan oikeuksilla ts. ao. tauluihin ei välttämättä tarvitse antaa oikeuksia Ä Suoritusoikeus proseduuriin / funktioon myönnettävä GRANT EXECUTE ON <object_name> TO <user_name>

HELIA 8 (17) Ohjelmakoodista Sallitut elementit: 1. DML-komennot 2. PL/SQL lauseet 3. Proseduuri- ja funktiokutsut (myös itsensä kutsuminen) Ä Mikäli kutsutaan triggeristä, transaktiolauseita ei saa olla (COMMIT, ROLLBACK) Ä Proseduurissa määritellyt muuttujat ja vakiot olemassa vain proseduurin suorituksen ajan Ä tee tekstinkäsittelyohjelmalla (Procedure Builderillä) (editointi helpompaa) Koodin virheet Ä SHOW ERRORS -komento + + tietohakemistotaulut (palataan jatkossa) esim....

HELIA 9 (17) Virhetilanteiden käsittely ohjelmassa RAISE_APPLICATION_ERROR (error_number, message text ) 1. Keskeyttää aliohjelman suorituksen 2. Peruuttaa aliohjelman suorittamat toimenpiteet 3. Palauttaa määritellyn virhenumeron ja viestin Ä Virhenumerot 20000-20999 on varattu käyttäjän (=suunnittelijan) määrittelemille virheille Ä RDBMS ei tarkista virhenumeroiden ainutkertaisuutta

HELIA 10 (17) Riippuvuudet 1. Objektit, joihin koodissa viitataan (proseduurit, funktiot, paketit, taulut, näkymät, synonyymit, sekvenssit) 2. Objektit, joista em. objektit ovat riippuvaisia Ä Oracle tarkistaa riippuvuudet automaattisesti Å Riippuvat objektit on käännetään uudelleen, mikäli viitattu kohde muuttuu Ä Käännös tapahtuu automaattisesti ajonaikana Ä Tarvittaessa koodia korjattava ja käännettävä manuaalisesti Kutsuttava proseduuri muuttuu esim. parametrilista muuttuu Käsiteltävä taulu muuttuu esim. käsiteltävä kenttä poistetaan ALTER PROCEDURE <object_name> COMPILE; ALTER FUNCTION <object_name> COMPILE; ALTER PACKAGE <object_name> COMPILE;

HELIA 11 (17) Proseduurit Oraclen syntaksi: CREATE PROCEDURE esimerkki kutsut CREATE OR REPLACE PROCEDURE ALTER PROCEDURE DROP PROCEDURE

HELIA 12 (17) Funktiot Oraclen syntaksi: CREATE FUNCTION esimerkki kutsut CREATE OR REPLACE FUNCTION ALTER FUNCTION DROP FUNCTION

HELIA 13 (17) Paketit / Packages Kokoaa yhteen aliohjelmia ja muuttujamäärittelyjä 1. Määrittelyosa (package specification Proseduurien ja funktioiden esittely Muuttujien ja vakioiden määrittely 2. Runko (package body) Proseduurien ja funktioiden määrittely Ä Paketissa määritellyt muuttujat ja vakiot olemassa koko käyttäjän istunnon ajan Oraclen syntaksi CREATE PACKAGE esimerkki CREATE OR REPLACE PACKAGE ALTER PACKAGE DROP PACKAGE

HELIA 14 (17) PL/SQL:stä Modulaarisuus [ DECLARE... ] BEGIN... [EXCEPTION...] END; Muuttujat Vakiot Kursorit SQL-työalue Ä Määritellään tyypillisesti kyselyille jotka palauttavat useamman kuin yhden rivin ja kutakin riviä halutaan käsitellä erikseen Tiedoston käsittely OPEN FETCH CLOSE Ä Kursori osoittaa käsiteltävän tietueen Kuva

HELIA 15 (17) Dynaamiset tietotyypit DECLARE This_tittle This_rec books.tittle%type; books%rowtype; CURSOR c1 IS SELECT tittle, author, publisher FROM books; Book_rec1%ROWTYPE;... OPEN c1 FETCH c1 INTO book_rec;...

HELIA 16 (17) Kontrollirakenteet IF TEHN ELSE END IF Toistorakenteet FOR... IN.x..y LOOP... END LOOP WHILE... LOOP... END LOOP LOOP... EXIT WHEN... END LOOP; Hyppy GOTO <label_name>... <<label_name>>...

HELIA 17 (17) Kapselointi Public / private määreet paketin tietorakenteille ja aliohjelmille Virheen käsittely