34
SQL un PL/SQL Viena DB tabulas raksta iegūšana un apstrāde 1. SELECT vaicājums PL/SQL programmā declare m_NUM DARBINIEKI.NUMURS%type ; m_UZV DARBINIEKI.UZVARDS%type ; m_VAR DARBINIEKI.VARDS%type ; begin select NUMURS, UZVARDS, VARDS into m_NUM, m_UZV, m_VAR from DARBINIEKI; ... end; 2. Datu ievade DB tabulās (INSERT) begin insert into DARBINIEKI(NUM, UZV, VAR) values(5, 'Koks', 'Liene'); insert into DARBINIEKI (NUM, UZV, VAR) values(6, 'Zars', 'Varis'); end; 3. DB tabulas lauka vērtības modificēšana (UPDATE) begin update DARBINIEKI set ALGA = 180.00 where UZV = 'Koks' and VAR = 'Liene'; ... end; PL/SQL programma declare . . . begin . . . SELECT ... . . . SELECT ... 1

Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

  • Upload
    lamngoc

  • View
    225

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

SQL un PL/SQLViena DB tabulas raksta iegūšana un apstrāde

1. SELECT vaicājums PL/SQL programmā

declare m_NUM DARBINIEKI.NUMURS%type ; m_UZV DARBINIEKI.UZVARDS%type ; m_VAR DARBINIEKI.VARDS%type ;begin

select NUMURS, UZVARDS, VARDS into m_NUM, m_UZV, m_VAR from DARBINIEKI;...end;

2. Datu ievade DB tabulās (INSERT)

begin insert into DARBINIEKI(NUM, UZV, VAR) values(5, 'Koks', 'Liene'); insert into DARBINIEKI (NUM, UZV, VAR) values(6, 'Zars', 'Varis');end;

3. DB tabulas lauka vērtības modificēšana (UPDATE)

beginupdate DARBINIEKI set ALGA = 180.00 where UZV = 'Koks' and VAR = 'Liene';...end;

4. DB tabulas raksta dzēšana no tabulas (komanda DELETE)

begin

delete from DARBINIEKI where NUM = 4;... end;

PL/SQL programmadeclare. . .begin. . . SELECT .... . .SELECT .... . .end;

1

Page 2: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Datu izguves realizēšana PL/SQL valodas programmās

1. Izpildot PL/SQL valodas programmā iekļautu SQL komandu (izteiksmi), Oracle

DBVS tai piešķir (izdala) privātu darba atmiņas apgabalu SGA (System Global

Area) operatīvās atmiņas apgabalā.

2. Izdalītajā atmiņas apgabalā tiek ierakstīti:

1) ar SQL komandu iegūtie dati no datu bāzes;

2) SQL komandas izpildei nepieciešamie dati.

Datu bāzePL/SQL programma

declare. . .begin. . . SELECT .... . .SELECT .... . .end;

SGA (System Global Area)

Kursors

1)2)

3)

A cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement. You can use the cursor to retrieve the rows of the result set one at a time. You can use cursor attributes to get information about the state of the cursor—for example, how many rows the statement has affected so far.

2

Page 3: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Datu izguves mekānismi (kursori un speciāli buferi)

Atkarībā no izdalītajā atmiņas apgabalā veicamajām funkcijām, atmiņas apgabals un piesaistītais izpildes mehānisms tiek dažādi apzīmēts jeb nosaukts:

1) tiešai (explicit) definētais kursors. Tas ir piesaistīts SQL operatoram SELECT izmantojot definējumu CURSOR … IS. Tiek izgūti vairāki vai viens tabulas raksts.

2) netieši (implicit) definētais kursors jeb SQL kursors. Tiek izmantots operatoriem INSERT, UPDATE, DELETE un SELECT … INTO. Šo kursoru nevajag atvērt un aizvērt. Tas notiek automātiski. Viena tabulas raksta apstrāde.

3) kursora mainīgais (cursor variable). Vairāku tabulas rakstu izguve izmantojot mainīgo kā norādi uz kursora struktūru.

4) kursora izteiksme (cursor expression);

5) SQL dināmiskā vaicājuma buferis;

6) BULK COLLECT mehānisms rakstu kopas izgūšanai (liela apjoma datu kopas izgūšana).

DB tabula FIRMASF_NUM

F_NOS DIBIN_DAT

1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

3 AAA 2007-DEC-6

2 CCC 2006-JAN-233 AAA 2007-DEC-6

1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

3

Page 4: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Kursors

Lai no datu bāzes tabulas secīgi nolasītu tabulas rakstus, tiek izmantoti kursori. Izmantojot kursorus tiek veiktas sekojošas darbības:

1) kursora definēšana;2) kursora atvēršana;3) raksta vai rakstu (cikls) izgūšana;4) kursora aizvēršana.

Atmiņas buferis SGA apgabalā

Kursors

DB tabula DARBINIEKI

Izgūtie dati

Vaicājumsselect ...from ...where ...

PL/SQL programma

declare...cursor KURSORS_A is select ... ;...

beginopen KURSORS_A;fetch ...fetch ......close KURSORS_A;

end;

Datus ieraksta PL/SQL mainīgajos un struktūrās

4

Page 5: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Tieši definēto kursoru izmantošana

1. kursora deklarēšana:

CURSOR kursora_nosaukums IS SELECT_operators;

2. kursora atvēršana:

OPEN kursora_nosaukums;

3. datu izguve no datu bāzes PL/SQL struktūrās:

FETCH kursora_nosaukums INTO mainīgo_saraksts;

4. kursora aizvēršana:

CLOSE CURSOR kursora_nosaukums;

Kursora definējums:

cursor KURSORA_NOSAUKUMS [ ( parametrs_1 [ , parametrs_2 ...] ) ][return ATGRIEŠANAS_SPECIFIKACIJA ] is SELECT_izteiksme[ for update [ of [ kolonu_saraksts ] ] ;

5

Page 6: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Tieši definēto kursoru izmantošana (piemērs)

1. kursora deklarēšana

declare declare cursor KURSORS_1 is cursor KURSORS_1 (parametrs_1 char(8)) is select UZV, VAR, ALGA select UZV, VAR, ALGA from DARBINIEKI from DARBINIEKI where DZIM = 'sieviete'; where DZIM = parametrs_1; 2. kursora atvēršana

begin beginopen KURSORS_1; mainig_1 := 'sieviete' ; open KURSORS_1(mainig _1);

3. viena raksta izguve no kursora un ierakstīšana PL/SQL valodas rakstā

beginopen KURSORS_1fetch KURSORS_1 into raksts_1;

3'. visu rakstu izguve no kursora izmantojot ciklu

beginopen KURSORS_1;loop fetch KURSORS_1 into raksts_1; exit when KURSORS_1%NOTFOUND;

-- Raksta raksts_1 ierakstīšana datu tabulā vai kur citur.end loop;

4. kursora aizvēršana

begin...close KURSORS_1;

6

Page 7: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Kursora atribūti

Kursora atribūtus var izmantot gan tieši definētiem kursoriem, gan arī netieši definētiem kursoriem: kursora_nosaukums%kursora atribūts

Ir četri kursora atribūti:

1) %NOTFOUND - jauns raksts nav atrasts (vērtība TRUE);

2) %FOUND – jauns raksts ir atrasts (vērtība TRUE);

3) %ISOPEN - kursors ir atvērts (vērtība TRUE);

4) %ROWCOUNT - cik raksti nolasīti (vērtība vesals skaitlis).

Piemērs. Atribūta izmantošana netieši definētajam kursoram:

beginselect * into Raksts_1 FROM Darbinieki WHERE NUMURS =100;if SQL%NOTFOUND THEN INSERT INTO Darbibu_tabula (D_NUM, REZULTATS) VALUES (100, ‘Nav atrasts’);end if;...end;

7

Page 8: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Kursora cikla FOR izmantošana

declare

cursor KURSORS_STUDENTI is

select * from STUDENTI where SPEC = 'Datorzinības';

type TIPS_1 is table of STUDENTI%ROWTYPE;

m_tab TIPS_1;

i number default 1;

begin

for raksts_students in KURSORS_STUDENTI loop KURSORS_STUDENTI

m_tab(i) := raksts_students;

i := i +1;

end loop;

end;

Tabula STUDENTI

Kursors (buferis)

PL/SQL tabula m_tab

raksts_students

8

Page 9: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

PL/SQL programma viena tabulas raksta nolasīšanai

create table FIRMAS(F_NUM number Primary key,F_NOS varchar2(30),DIBIN_DAT date);

insert into FIRMAS values(1, 'BBB', TO_DATE('2005-FEB-15', 'YYYY-MON-DD'));insert into FIRMAS values(2, 'CCC', TO_DATE('2006-JAN-23', 'YYYY-MON-DD'));insert into FIRMAS values(3, 'AAA', TO_DATE('2007-DEC-6', 'YYYY-MON-DD'));

declarem_num FIRMAS.F_NUM%type;m_nos FIRMAS.F_NOS%type; m_dat FIRMAS.DIBIN_DAT%type;m_raksts FIRMAS%rowtype;m1 FIRMAS.F_NOS%type;

begin select F_NUM, F_NOS, DIBIN_DAT into m_num, m_nos, m_dat from FIRMAS where F_NUM = 2; select F_NUM, F_NOS, DIBIN_DAT into m_raksts from FIRMAS where F_NUM = 2;

m1 := m_nos; DBMS_OUTPUT.PUT_LINE(m1);

m1 := m_raksts.F_NOS; DBMS_OUTPUT.PUT_LINE(m1);end;

SQL> set serveroutput ON;

Izvade:

CCC CCC

2 CCC 2006-JAN-23

2 CCC 2006-JAN-23

FIRMASF_NUM

F_NOS DIBIN_DAT

1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

9

Page 10: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Darbs ar SQL Developer10

Page 11: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

11

Page 12: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

DB tabulas rakstu nolasīšana un ierakstīšanai PL/SQL tabulā ar indeksiem izmantojot kursoru

declarecursor KURSORS_A isselect F_NUM, F_NOS, DIBIN_DATfrom FIRMAS;type IND_TABULAS_TIPS is table of KURSORS_A%rowtype not nullindex by binary_integer;ind_tabula IND_TABULAS_TIPS;i number default 1;

begin for m_raksts in KURSORS_A loop ind_tabula(i) := m_raksts; DBMS_OUTPUT.PUT_LINE(ind_tabula(i).F_NOS); i := i +1; end loop; end;

BBBCCCAAA

FIRMASF_NUM

F_NOS DIBIN_DAT

1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

ind_tabula1 1 BBB 2005-FEB-152 2 CCC 2006-JAN-233 3 AAA 2007-DEC-6

12

Page 13: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

PL/SQL tabulas ar indeksiem atribūti

mainīgais_1 := tabula_c.COUNT; -- Tabulas rindu skaita noteikšana.

Tiek lietoti atribūti:1) FIRST – tabulas pirmās rindas indeksa vērtības iegūšana;2) LAST – tabulas pēdējās rindas indeksa vērtības iegūšana;3) NEXT – tabulas nākošās rindas indeksa vērtības iegūšana;4) PRIOR – tabulas iepriekšējās rindas indeksa vērtības iegūšana;5) EXISTS(n) – atgriež vērtību TRUE, ja norādītais elements (rinda n) ir

tabulā;6) DELETE (I,J) – tabulas rindu no I līdz J dzēšana.

13

Page 14: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

PL/SQL programma DB tabulas rakstu nolasīšanai un ierakstīšanai PL/SQL tabulā ar kolekciju izmantojot kursoru

declarecursor KURSORS_A isselect F_NUM, F_NOS, DIBIN_DATfrom FIRMAS;type TAB_AR_KOL_TIPS is table of KURSORS_A%rowtype;tabula_ar_kol TAB_AR_KOL_TIPS := TAB_AR_KOL_TIPS();i number default 1;

begin for m_raksts in KURSORS_A loop

tabula_ar_kol.extend; tabula_ar_kol(i) := m_raksts;

DBMS_OUTPUT.PUT_LINE(tabula_ar_kol(i).F_NOS); i := i +1; end loop; end;

BBBCCCAAA

FIRMASF_NUM

F_NOS DIBIN_DAT

1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

tabula_ar_kol1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

14

Page 15: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

PL/SQL programma DB tabulas rakstu nolasīšanai un ierakstīšanai PL/SQL masīvā izmantojot kursoru

declarecursor KURSORS_A isselect F_NUM, F_NOS, DIBIN_DATfrom FIRMAS;type MASIVA_TIPS is varray(10) of KURSORS_A%rowtype;masivs_a MASIVA_TIPS := MASIVA_TIPS();i number default 1;

begin for m_raksts in KURSORS_A loop

masivs_a.extend;masivs_a(i) := m_raksts;

DBMS_OUTPUT.PUT_LINE(masivs_a(i).F_NOS); i := i +1; end loop; end;

BBBCCCAAA

FIRMASF_NUM

F_NOS DIBIN_DAT

1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

15

Page 16: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

BULK COLLECT komandas izmantošana DB tabulas rakstu nolasīšanai

declaretype TAB_TIPS is table of FIRMAS%ROWTYPE;

tab TAB_TIPS := TAB_TIPS(); i number;

beginselect * BULK COLLECT into tab from FIRMAS; for i in 1 ..3 loop

DBMS_OUTPUT.PUT_LINE(tab(i).F_NOS);end loop;

end;

BBBCCCAAA

Notiek automātika tabulas rindu inicializācija (EXTEND)!

tab1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

FIRMASF_NUM

F_NOS DIBIN_DAT

1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

16

Page 17: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Kursora mainīgā izmantošana DB tabulas datu nolasīšanai

declaretype KURS_MAIN_TIPS is REF CURSOR;kurs_main_a KURS_MAIN_TIPS;type TAB_TIPS_1 is table of FIRMAS.F_NOS%type;

tab_1 TAB_TIPS_1 := TAB_TIPS_1(); type TAB_TIPS_2 is table of FIRMAS.DIBIN_DAT%type;tab_2 TAB_TIPS_2 := TAB_TIPS_2(); i number;izvele number default 2;

beginif izvele = 1 then

open kurs_main_a for select F_NOS from FIRMAS;for i in 1 .. 3 loop

tab_1.extend;fetch kurs_main_a into tab_1(i);DBMS_OUTPUT.PUT_LINE(tab_1(i));

end loop; end if;if izvele = 2 then

open kurs_main_a for select DIBIN_DAT from FIRMAS; for i in 1 .. 3 loop

tab_2.extend;fetch kurs_main_a into tab_2(i);DBMS_OUTPUT.PUT_LINE(tab_2(i));

end loop;end if;

end;

tabBBBCCCAAA

tab15-FEB-0523-JAN-0606-DEC-07

FIRMASF_NUM

F_NOS DIBIN_DAT

1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

17

Page 18: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Kursora izmantošana metadatu izgūšanai no datu bāzes datu vārdnīcas

create table FIRMAS(F_NUM number PRIMARY KEY,F_NOS varchar2(35),DIB_DAT date default SYSDATE, ADRESE varchar2(25),TELEFONS varchar2(10));

insert into FIRMAS(F_NUM, F_NOS, DIB_DAT, ADRESE, TELEFONS) values (1, 'AAA', TO_DATE('21-11-2001', 'DD-MM-YYYY'), 'Avotu iela 17 dz. 7, Rīga', '67123456');insert into FIRMAS(F_NUM, F_NOS, DIB_DAT, ADRESE, TELEFONS) values (2, 'BBB', TO_DATE('28-07-2005', 'DD-MM-YYYY'), 'Upes iela 21 dz. 15, Rīga', '67234567');

select COLUMN_NAMEfrom ALL_TAB_COLUMNSwhere TABLE_NAME = 'FIRMAS';

COLUMN_NAME-------------------------F_NUMF_NOSDIB_DATADRESETELEFONS

18

Page 19: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

Kursora izmantošana metadatu izgūšanai no datu bāzes datu vārdnīcas (turpinājums)

declarecursor KURSORS_A isselect COLUMN_NAMEfrom ALL_TAB_COLUMNSwhere TABLE_NAME = 'FIRMAS';type TAB_AR_KOL_TIPS is table of KURSORS_A%rowtype;tabula_ar_kol TAB_AR_KOL_TIPS := TAB_AR_KOL_TIPS();i number default 1;

begin for m_raksts in KURSORS_A loop

tabula_ar_kol.extend; tabula_ar_kol(i) := m_raksts;

DBMS_OUTPUT.PUT_LINE(tabula_ar_kol(i).COLUMN_NAME); i := i +1; end loop; end;

F_NUMF_NOSDIB_DATADRESETELEFONS

19

Page 20: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

PL/SQL programma DB tabulas ar objektu kolonu raksta nolasīšanai un objekta komponentes izdalīšanai

create or replace type ADRESE as object(PILSETA varchar2(10),IELA varchar2(15));

create table CILVEKI(C_NUM number Primary key,UZV varchar2(10),VAR varchar2(10),C_ADRESE ADRESE);

insert into CILVEKI values(1, 'Koks', 'Juris', ADRESE('Rīga', 'Stabu 10'));insert into CILVEKI values(2, 'Celms', 'Rasma', ADRESE('Rīga', 'Avotu 21'));insert into CILVEKI values(3, 'Sakne', 'Zane', ADRESE('Ogre', 'Rīgas 15'));

declare m1 CILVEKI%rowtype; m2 CILVEKI.C_ADRESE.IELA%type;begin select A.C_NUM, A.UZV, A.VAR, A.C_ADRESE into m1 from CILVEKI A where A.C_NUM = 2;

m2 := m1.C_ADRESE.IELA;DBMS_OUTPUT.PUT_LINE(m2);

end;

Avotu 21

CILVEKI

20

Page 21: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

DB tabulas ar objektu kolekciju izmantošana PL/SQL programmāDB tabulas ar kolekciju izveidošana

create or replace type JURNIEKS as object(JUR_NUM number,JUR_VAR varchar2(10),JUR_UZV varchar2(15),JUR_ALGA number(5,2));

create or replace type KOMANDA as table of JURNIEKS;

create table REISI(KAPT_NUM number Primary key,KAPT_VAR varchar2(10),KAPT_UZV varchar2(15),KAPT_ALGA number(6,2) default 0.00,R_KOMANDA KOMANDA)nested table R_KOMANDA store as REISA_KOMANDA;

insert into REISI values(1, 'Aivars', 'Valters', 230.00, KOMANDA( JURNIEKS(201, 'Uldis', 'Polis', 140.00), JURNIEKS(202, 'Valdis', 'Vimba', 150.00)));

insert into REISI values(2, 'Zane', 'Koks', 250.00, KOMANDA( JURNIEKS(301, 'Juris', 'Zars', 140.00), JURNIEKS(303, 'Rasma', 'Celms', 150.00)));

REISIKAPT_NUM KAPT_VAR KAPT_UZV KAPT_ALGA R_KOMANDA

21

Page 22: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

1 Aivars Valters 230 201 Uldis Polis 140

202 Valdis Vimba 150

DB tabulas ar objektu kolekciju izmantošana PL/SQL programmā (turpinājums)DB tabulas REISI raksta kolekcijas ierakstīšana PL/SQL tabulā

DB tabula REISI

PL/SQL tabula tab

declare m1 REISI%ROWTYPE; type TAB_TIPS is table of KOMANDA; tab TAB_TIPS := TAB_TIPS(); begin select A.KAPT_NUM, A.KAPT_VAR, A.KAPT_UZV, A.KAPT_ALGA, A.R_KOMANDA into m1 from REISI A where A.KAPT_NUM =1;-- pirmā raksta pārrakstīšana tab.EXTEND; tab(1) := m1.R_KOMANDA; select A.KAPT_NUM, A.KAPT_VAR, A.KAPT_UZV, A.KAPT_ALGA, A.R_KOMANDA into m1 from REISI A where A.KAPT_NUM =2;-- otrā raksta pārrakstīšana tab.EXTEND; tab(2) := m1.R_KOMANDA; end;

201 Uldis Polis 140

202 Valdis Vimba 150

22

Page 23: Datu nodošana no DB PL/SQL vidē · Web viewA cursor is a pointer to a private SQL area that stores information about processing a specific SQL statement or PL/SQL SELECT INTO statement

1 Aivars Valters 230 201 Uldis Polis 140

202 Valdis Vimba 150

201 Uldis Polis 140

202 Valdis Vimba 150

DB tabulas ar objektu kolekciju izmantošana PL/SQL programmā (turpinājums)Kursora izmantošana DB tabulas REISI ar objektu kolekciju datu ierakstīšanai PL/SQL tabulā ar kolekciju

declare cursor KURSORS_A is select B.JUR_NUM, B.JUR_VAR, B.JUR_UZV, B.JUR_ALGA from REISI A, TABLE(A.R_KOMANDA) B; type TAB_TIPS is table of KURSORS_A%ROWTYPE; tab TAB_TIPS := TAB_TIPS(); i number default 1; m1 number; m2 varchar2(15); m3 varchar2(15); m4 number(8,2);begin for RAKSTS_JURNIEKS in KURSORS_A loop tab.EXTEND; tab(i) := RAKSTS_JURNIEKS; m1 := tab(i).JUR_NUM; m2 := tab(i).JUR_VAR; m3 := tab(i).JUR_UZV; m4 := tab(i).JUR_ALGA; DBMS_OUTPUT.PUT_LINE(TO_CHAR(m1) || ' ' || m2 || ' ' || m3 || ' ' || TO_CHAR(m4)); i := i +1; end loop; end;

201 Uldis Polis 140202 Valdis Vimba 150301 Juris Zars 140303 Rasma Celms 150

23