Oracle PL / SQL -tietueiden tyyppi ja esimerkkejä

Sisällysluettelo:

Anonim

Mikä on tietueen tyyppi?

Tietuetyyppi on monimutkainen tietotyyppi, jonka avulla ohjelmoija voi luoda uuden tietotyypin halutulla sarakerakenteella.

  • Se ryhmittää yhden tai useamman sarakkeen muodostaakseen uuden tietotyypin
  • Näillä sarakkeilla on oma nimi ja tietotyyppi
  • Tietuetyyppi voi hyväksyä tiedot
    • Yhtenä tietueena, joka koostuu monista sarakkeista TAI
    • Se voi hyväksyä tietyn tietyn sarakkeen arvon
  • Tietuetyyppi tarkoittaa yksinkertaisesti uutta tietotyyppiä. Kun tietuetyyppi on luotu, se tallennetaan uutena tietotyyppinä tietokantaan ja samaa käytetään muuttujan ilmoittamiseen ohjelmissa.
  • Se käyttää avainsanaa 'TYPE' opettaakseen kääntäjää luomaan uuden tietotyypin.
  • Se voidaan luoda " tietokantatasolla", joka voidaan tallentaa tietokantaobjekteina, käyttää kaikkialla tietokannassa tai se voidaan luoda " aliohjelmatasoilla" , joka näkyy vain alaohjelmien sisällä.
  • Tietokantatason tietuetyyppi voidaan ilmoittaa myös taulukon sarakkeille, jotta yksittäinen sarake mahtuu monimutkaiset tiedot.
  • Näiden tietotyyppien tietoihin pääsee viittaamalla niiden muuttujan_nimiin, jota seuraa pisteoperaattori (.), Jota seuraa sarakkeen_nimi, eli '. '

Syntaksi ilmoitusta varten tietokantatasolla:

CREATE TYPE  IS RECORD( ,);

Ensimmäisessä syntaksissa voimme nähdä avainsanan "CREATE TYPE", joka kehottaa kääntäjää luomaan tietuetyypin nimeltä "type_name_db" määritetyllä sarakkeella tietokantaobjektina.

Tämä annetaan yksittäisenä lauseena eikä minkään lohkon sisällä.

Syntaksi ilmoitukselle aliohjelmatasolla:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

Syntaksiin luomme tietuetyypin nimeltä "type_name" vain alaohjelman sisällä.

Molemmissa ilmoitusmenetelmissä sarakkeen ja tietotyypin määrittelytapa on samanlainen.

Esimerkki 1: TALLENNUSTyyppi tietokantaobjektina

Tässä ohjelmassa aiomme nähdä, miten "Tietueen tyyppi" luodaan tietokantaobjektina. Aiomme luoda tietuetyypin 'emp_det', jossa on neljä saraketta. Sarakkeet ja niiden tietotyyppi ovat seuraavat:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • JOHTAJA (NUMERO)
  • PALKKA (NUMERO)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Tuotos:
Type created

Koodin selitys:

  • Yllä oleva koodi luo tyypin emp_det tietokantaobjektiksi.
  • Siinä on 4 saraketta emp_no, emp_name, manager ja palkka määritellyllä tavalla.
  • Nyt 'emp_det' on samanlainen kuin muu tietotyyppi (kuten NUMBER, VARCHAR @ jne.) Ja se näkyy koko tietokannassa. Siksi tätä voidaan käyttää koko tietokannassa tämän tyyppisen muuttujan ilmoittamiseksi.

Tuotos:

Luonut tietuetyypiksi 'emp_det' tietokantatasolla.

Esimerkki 2: Tietuetyyppi aliohjelmatasolla - Saraketasoinen pääsy

Tässä esimerkissä aiomme nähdä, kuinka luoda tietuetyyppi aliohjelmatasolla ja kuinka täyttää ja noutaa arvot siitä saraketasoittain.

Aiomme luoda 'emp_det' tietueetyypin aliohjelmatasolle, ja aiomme käyttää sitä tietojen täyttämiseen ja sen tietojen näyttämiseen.

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_emp_rec.emp_no:= 1001;guru99_emp_rec.emp_name:=:'XXX';guru99_emp_rec.manager:= 1000;guru99_emp_rec.salary:=10000;dbms_output.put.line('Employee Detail');dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary);dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);END;/

Tuotos:

Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000

Koodin selitys:

  • Koodirivi 2-8 : Tietuetyyppi 'emp_det' ilmoitetaan sarakkeilla emp_no, emp_name, palkka ja tietotyypin NUMBER, VARCHAR2, NUMBER, NUMBER ylläpitäjä.
  • Koodirivi 9: guru99_emp_rec-muuttuja ilmoitetaan tietotyypiksi 'emp_det'. Nyt tähän muuttujaan mahtuu arvo, joka sisältää kaikki yllä olevat 4 kenttää / saraketta.
  • Koodirivi 11: Täytä kentän 'guru99_emp_rec' emp_no kenttä arvolla 1001.
  • Koodirivi 12: Täytä kentän 'guru99_emp_rec' 'emp_name' kenttä arvolla XXX.
  • Koodirivi 13: Guru99_emp_rec-kentän 'manager' -kentän täyttäminen arvolla 1000.
  • Koodirivi 14: Guru99_emp_rec-arvon '' palkka '' kentän täyttäminen arvolla 10000.
  • Koodirivi 15-19: Näytetään 'guru99_emp_rec' -arvon tulos.

Esimerkki 3: Tietuetyyppi aliohjelmataso-rivitasolla

Tässä esimerkissä aiomme nähdä, kuinka luoda tietuetyyppi aliohjelmatasolla ja kuinka täyttää se rivitasona. Aiomme luoda 'emp_det' tietueetyypin aliohjelmatasolle, ja aiomme käyttää sitä tietojen täyttämiseen ja sen tietojen näyttämiseen.

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000);COMMIT;SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002;dbms_output.put_line (‘Employee Detail’);dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary);dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager);END;/

Koodin selitys:

  • Koodirivi 2-8 : Tietuetyyppi 'emp_det' ilmoitetaan sarakkeilla emp_no, emp_name, palkka ja tietotyypin NUMBER, VARCHAR2, NUMBER, NUMBER ylläpitäjä.
  • Koodirivi 9: guru99_emp_rec-muuttuja ilmoitetaan tietotyypiksi 'emp_det'. Nyt tähän muuttujaan mahtuu arvo, joka sisältää kaikki yllä olevat 4 kenttää / saraketta.
  • Koodirivi 11: Taulukkotunnuksen täyttäminen tiedoilla 1002 muodossa emp_no, VVV emp_nimi, 15000 palkkana ja 1000 johtajanumerona.
  • Koodirivi 12: Edellä olevan lisäystapahtuman tekeminen.
  • Koodirivi 13: Muuttujan 'guru99_emp_rec' täyttäminen rivitason tiedoina työntekijänumeron 1002 valintakyselystä.
  • Koodirivi 15-19: Näytetään 'guru99_emp_rec' -arvon tulos.

Tuotos:

Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000

Huomaa: Tietuetyyppiin pääsee vain saraketasolla samalla, kun sen arvo ohjataan mihin tahansa tulostustilaan.