PL/SQL valodas procedūras file · Web viewPL/SQL valodas procedūras

25
PL/SQL programmu veidi 1. Anonīmais bloks (anonymous block). 2. Nosauktais bloks (named block). Tie ir anonīmie bloki ar iezīmēm. 3. Apakšprogrammas (subprograms). Tās ir: - procedūra; - funkcija; - modulis (pakete). Modulis ļauj glabāt saistītas programmas un datus vienā vietā. Tas sastāv no apraksta (specifikācijas) un ķermeņa. 4. Iekšējā (lokālā) apakšprogramma. 5. Trigeris (trigger). Trigeri ir programmas, kuras tiek izpildītas vienmēr kad notiek noteikts notikums (piemēram, pirms raksta dzēšanas jeb pēc tam). 6. Objektu metode (MAP, ORDER, MEMBER, STATIC, CONSTRUCTOR). Tiek veidota un izmantota relāciju – objektu datu bāzes struktūrām. 1

Transcript of PL/SQL valodas procedūras file · Web viewPL/SQL valodas procedūras

Page 1: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL programmu veidi1. Anonīmais bloks (anonymous block).

2. Nosauktais bloks (named block). Tie ir anonīmie bloki ar iezīmēm.

3. Apakšprogrammas (subprograms). Tās ir:

- procedūra;

- funkcija;

- modulis (pakete). Modulis ļauj glabāt saistītas programmas un datus vienā

vietā. Tas sastāv no apraksta (specifikācijas) un ķermeņa.

4. Iekšējā (lokālā) apakšprogramma.

5. Trigeris (trigger). Trigeri ir programmas, kuras tiek izpildītas vienmēr kad notiek

noteikts notikums (piemēram, pirms raksta dzēšanas jeb pēc tam).

6. Objektu metode (MAP, ORDER, MEMBER, STATIC, CONSTRUCTOR).

Tiek veidota un izmantota relāciju – objektu datu bāzes struktūrām.

1

Page 2: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL valodas programmu pamatvienība - bloks

1. No blokiem sastāv visas PL/SQL programmas.

2. Bloki var atrasties viens aiz otra vai viens bloks var tikt iekļauts citā.

3. PL/SQL valodas bloka struktūra ir sekojoša:

[ declare ]

mainīgo un kursoru definēšana

begin

izpildāmās darbības (operatori, procedūras, funkcijas un SQL operatori)

[ exception ]

īpašo situāciju apstrāde

end;

<<outer>> -- labelDECLARE birthdate DATE := TO_DATE('09-AUG-70', 'DD-MON-YY');BEGIN DECLARE birthdate DATE := TO_DATE('29-SEP-70', 'DD-MON-YY'); BEGIN IF birthdate = outer.birthdate THEN DBMS_OUTPUT.PUT_LINE ('Same Birthday'); ELSE DBMS_OUTPUT.PUT_LINE ('Different Birthday'); END IF; END;END;

Different Birthday

2

Page 3: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

Datu izvades iespējas serverī izmantojot programmu paketi DBMS_OUTPUT

Put Get

1. Tā kā valoda PL/SQL ir paredzēta darbam ar datu bāzes datiem, ievades un izvades komandas tajā nav paredzētas.

2. Tomēr ar programmu paketes DBMS_OUTPUT procedūrām tiek realizētas divas galvenās izvadei nepieciešamās operācijas:1) PUT – datu novietošana servera buferī. Operācijas PUT izpildi nodrošina

procedūras PUT (rindas beigas pazīmes nav), PUT_LINE (rindas beigas pazīme ir), NEW_LINE (rindas beigu pazīmes ievade). PUT_LINE ir ekvivalents PUT un NEW_LINE.

2) GET – lasa vērtības no iekšējā bufera un atgriež to procedūrai izvadei. Operācijas GET izpildi nodrošina procedūras GET_LINE, GET_LINES.

3. Bufera vadību realizē procedūras ENABLE, DISABLE.

4. Pašā DBMS_OUTPUT modelī nav datu izvades iespēju. Datu izvadei programmās SQL*Plus, SQL*DBA un Server Manager ir programma SERVEROUTPUT (servera izvade). Kad šīs programmas darbība ir atļauta:

set SERVEROUTPUT on size 500 000; vai DBMS_OUTPUT.ENABLE (500 000);

automātiski beidzoties PL/SQL bloka apstrādei tiek izsaukta procedūra DBMS_OUTPUT.GET_LINES un iegūtie dati tiek izvadīti uz ekrāna.

Servera teksta buferis

3

Page 4: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

Programmu paketes DBMS_OUTPUT izmantošanas piemērs

SQL> set SERVEROUTPUT on size 100000SQL> begin

2 DBMS_OUTPUT.PUT_LINE('Sākums');3 for skaitītājs in 1..5 loop4 DBMS_OUTPUT.PUT_LINE('Cikls, iterācija =' | | skaitītājs);5 end loop;6 DBMS_OUTPUT.PUT_LINE('Beigas');7 end;

SākumsCikls, iterācija = 1Cikls, iterācija = 2Cikls, iterācija = 3Cikls, iterācija = 4Cikls, iterācija = 5Beigas

4

Page 5: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

Īpašo situāciju izmantošana

1. Izpildot PL/SQL programmu var notikt izpildes kļūda. Tad tiek fiksēta

(raised) īpašā situācija (exception). Vadība tiek nodota programmas daļai, kas

realizē īpašo situāciju apstrādi (exception handlers). Ir divu tipu kļūdas:

a) kompilācijas etapa kļūdas;

b) izpildes etapa kļūdas.

2. Īpašās situācijas tiek veidotas tikai izpildes etapa kļūdām.

3. PL/SQL blokos īpašo situāciju apstrādi norāda ar operatoru EXCEPTION:

declare SITUĀCIJA_1 exception; -- Īpašās situācijas izveidošanabegin … if noteikums_1 then

raise SITUĀCIJA_1; --Īpašās situācijas notikuma fiksēšanaend if; … exception when SITUĀCIJA_1 then … -- Īpašās situācijas darbību norāde end;

4. Vienlaicīgi var tikt norādītas vairākas īpašās situācijas:

EXCEPTION

WHEN 1.īpašās_situācijas_nosaukums THEN darbības;

WHEN 2.īpašās_situācijas_nosaukums THEN darbības;

WHEN OTHERS THEN darbības;

END;

5

Page 6: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

Īpašo situāciju veidi1. Ir divu veidu īpašās situācijas:

a) standarta vai iepriekšdefinētās īpašās situācijas (NOT_LOGGED_ON,

ZERO_DIVIDE, NO_DATA_FOUND, INVALID_NUMBER,

INVALID_CURSOR, TOO_MENY_ROWS, …);

b) lietotāju definētās īpašās situācijas.

Biežāk izmantojamās standarta īpašās situācijasORA-1476 ZERO_DIVIDE Dalīšana ar nulliORA-1012 NOT_LOGGED-ON Nav saites ar Oracle datu bāziORA-1403 NO_DATA_FOUND Dati nav atrastiORA-1001 INVALID_CURSOR Nekorektas darbības ar kursoruORA-6502 VALUE_ERROR Aritmētiska kļūda vai pārveidojumu

kļūdaORA-1422 TOO_MANY_ROWS Operators SELECT … INTO atgriež

vairāk kā vienu rakstuORA-1017 LOGIN_DENIED Nepareizs lietotāja identifikators vai

parole

6

Page 7: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

Kļūdu koda un paskaidrojuma teksta iegūšana

1. Ar funkciju SQLCODE un SQLERRM palīdzību var noteikt standartkļūdu

kodu un paskaidrojuma tekstu:

WHEN OTHERS THEN

m_kļūdas_kods := SQLCODE;

m_kļūdas_teksts : = SUBSTR ( SQLERRM, 1, Garums);

INSERT INTO Kļūdu_tabula(KĻŪDAS_KODS, KĻŪDAS_TEKSTS)

VALUES (m_kļūdas_kods, m_kļūdas_teksts);

2. Kļūdas teksts var būt ar garumu līdz 512 simboliem. Lai to ierakstītu kā

mainīgā vērtību, jāievēro definētais mainīgā garums – Garums. Funkcija

SUBSTR () veido simbolu apakšrindu no kļudas teksta izdalot simbolus no 1 līdz

Garums.

3. Funkciju SQLERRM var izsaukt arī sekojoši:

SQLERRM (kļūdas_kods) ,

tad tiek iegūts kļūdas ziņojums atbilstošajam kļūdas kodam.

7

Page 8: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

Īpašās situācijas nosaukuma piesaiste

Īpašās situācijas kodam var piesaistīt īpašās situācijas nosaukumu. Tas atvieglina īpašo situāciju programmas daļas veidošanu. Tiek izmantota pragma (pragma) EXCEPTION_INIT. Pragma ir direktīva kompilatoram. To var uzskatīt kā komentāru, kurš ietekmē kompilatora darbu. Tā nemaina programmas darbību, bet tikai informē kompilatoru par kādu faktu.Piemērs:DECLARE Īpašā_situācija EXCEPTION, PRAGMA EXCEPTIN_INIT(Īpašā_situācija, Īpašās_situācijas_kods);BEGIN … EXCEPTION WHEN Īpašā_situācija THEN … END;

Īpašās situācijas valodā PL/SQL var klasificēt sekojoši:1) nosauktās iepriekš definētās (sistēmas) īpašās situācijas. Tās var lietot visos

PL/SQL moduļos.2) nosauktās lietotāju īpašās situācijas. Tās var tikt izmantotas tikai modulī, kurā tās

definētas.3) nenosauktās iepriekš definētās (sistēmas) īpašās situācijas. Tās var nosaukt lietojot

pragmu EXCEPTION_INIT. 4) nenosauktās lietotāju īpašās situācijas. Kļūda notiek servera daļā, bet ziņojums

jāizvada klienta daļā. To apstrādei izmanto procedūru RAISE_APPLICATION_ERROR:

RAISE_APPLICATION_ERROR (kļūdas_numurs, kļūdas_ziņojums ).Kļūdas numurs ir skaitlis diapazonā no –20 000 līdz –20 999 (lai nekonfliktētu ar iepriekš definētām īpašām situācijām). Kļūdas ziņojuma garums nedrīkst būt lielāks par 2KB.Piemērs:…-- Īpašās situācijas sasaiste ar kļūdas koduĪPAŠĀ_SITUĀCIJA_1 exceptionPRAGMA EXCEPTION_INIT(ĪPAŠĀ_SITUĀCIJA_1, kļūdas_numurs_2); begin…if Noteikums then RAISE_APPLICATION_ERROR(kļūdas_numurs_2, ‘Ziņojuma teksts … ‘); …exception when ĪPAŠĀ_SITUĀCIJA_1 then RAISE_APPLICATION_ERROR(kļūdas_numurs_1, ‘Ziņojuma_teksts’);…

8

Page 9: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL anonīmā bloka izmantošanas piemērsTabulas izveidošana:create table FIRMAS (

NUMURS number Primary key,NOSAUKUMS varchar2(50),DIBIN_DATUMS date);

Datu ievade tabulā FIRMAS:insert into FIRMAS values(1, 'Venta', TO_DATE('21.08.2008', 'DD.MM.YYYY'));insert into FIRMAS values(2, 'Daugava', TO_DATE('18.11.2009', 'DD.MM.YYYY'));insert into FIRMAS values(3, 'Gauja', TO_DATE('11.12.2011', 'DD.MM.YYYY'));

Servera bufera darbības aktivēšana:set serveroutput on size 100000;

Anonīmā bloka programma:declare

num FIRMAS.NUMURS%TYPE;nos FIRMAS.NOSAUKUMS%TYPE;dat FIRMAS.DIBIN_DATUMS%TYPE;

type RAKSTA_TIPS is record ( elem_1 FIRMAS.NUMURS%TYPE, elem_2 FIRMAS.NOSAUKUMS%TYPE, elem_3 FIRMAS.DIBIN_DATUMS%TYPE); raksts_1 RAKSTA_TIPS;begin

SELECT A.* INTO raksts_1FROM FIRMAS A WHERE A.NUMURS = 2;DBMS_OUTPUT.PUT_LINE('Firmas dati:');DBMS_OUTPUT.PUT_LINE('Numurs: ' || raksts_1.elem_1);DBMS_OUTPUT.PUT_LINE('Nosaukums: ' || raksts_1.elem_2);DBMS_OUTPUT.PUT_LINE('Dibināšanas datums: ' || raksts_1.elem_3);

end;

Firmas dati:Numurs: 2Nosaukums: DaugavaDibināšanas datums: 2009.11.18PL/SQL procedure successfully completed.

9

Page 10: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL valodas procedūras

1. Procedūras ir nosaukti bloki un tās kompilētā veidā glabājas datu bāzē. 2. Kompilēto kodu var izpildīt no cita PL/SQL bloka.

create or replace procedure PROCEDŪRAS_NOSAUKUMS (

arguments_1 [IN vai OUT vai IN OUT] argumenta_tips,

arguments_2 [IN vai OUT vai IN OUT] argumenta_tips, … ) IS vai AS

procedūras_ķermenis ; -- valodas PL/SQL bloks

3. IN tipa argumenti programmā var izteiksmēs atrasties tikai labajā pusē (piešķirt vērtību). 4. OUT tipa argumenti savukārt var atrasties tikai izteiksmes kreisajā pusē. 5. IN OUT tipa argumenti var atrasties abās izteiksmes pusēs. 6. Ja argumenta tips nav norādīts, pēc noklusēšanas principa tam ir IN tips. 7. Procedūras ķermenis (body) ietver definējuma un darbību izpildes daļu, kā arī izņēmumu situāciju apstrādes daļu.8. Procedūras izsaukšana citā blokā notiek sekojoši:

PROCEDŪRAS_NOSAUKUMS (argumentu faktiskās vērtības);

9. Procedūras faktiskie argumenti (argumenti izsaucot procedūru) un formālie argumenti (argumenti definējot funkciju) var tikt sasaistīti:

1. lietojot pozicionālo sasaistes variantu (positional notation). Procedūras formālajam argumentam atbilst faktiskais arguments, kas procedūras izsaukumā ierakstīts tajā pašā pozīcijā. 2. argumentu nosaukumu atbilstības norādes variantu (named notatation). Atbilstība tiek norādīta procedūras izsaukumā sekojošā veidā:

PROCEDŪRAS_NOSAUKUMS ( formālais_arguments => faktiskais_arguments, formālais_arguments => faktiskais_arguments, …);

10

Page 11: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL valodas procedūras (turpinājums)

10. Valoda PL/SQL neuzliek ierobežojumus parametru skaitam.11. Procedūrām var definēt argumentu vērtību pēc noklusēšanas (ja netiek norādīta argumenta faktiskā vērtība):

argumenta_nosaukums IN vai OUT vai IN OUT := sākuma_vērtība; vaiargumenta_nosaukums IN vai OUT vai IN OUT DEFAULT sākuma_vērtība;Piemēram:amats IN VARCHAR2 DEFAULT 'ierēdnis';

12. Ja procedūrai nav parametru, parametru sarakstu ierobežojošās apaļās iekavas nav jāraksta.

13. Lai izmainītu nokompilētas procedūras tekstu, tā ir jānodzēš ar operatoru DROP PROCEDURE un jāveido no jauna. Ja procedūras definējumā ir iekļauti slēgvārdi OR REPLACE, tad automātiski realizējas vecās procedūras dzēšana un jaunas izveidošana.

14. Līdzīgi kā citiem datu definēšanas valodas (DDL) operatoriem arī CREATE, pirms un pēc operatora CREATE OR REPLACE PROCEDURE izpildās operators COMMIT, kurš apstiprina procedūras koda permanentu ierakstu datu bāzē.

15. Procedūru izsaucot, formālo parametru vietā tiek lietoti faktiskie parametri. Pie tam procedūrai tiek nodoti ne tikai faktisko parametru nosaukumi, bet arī to definējumi un ierobežojumi. !!! Sakarā ar to definējot procedūru nedrīkst ierobežot CHAR, VARCHAR2 un NUMBER tipa parametra garumu un precizitāti.Piemērs:Procedūras definējums:create or replace procedure PROCEDŪRA_1 ( formālais_parametrs_A IN OUT VARCHAR2, formālais_parametrs_B IN OUT NUMBER ) ASbegin …end;Izsaucošā programma:declare faktiskais_parametrs_A VARCHAR2(20); faktiskais_parametrs_B NUMBER(5,2); begin PROCEDŪRA_1 (faktiskais_parametrs_A, faktiskais_parametrs_B);end;

11

Page 12: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL procedūras definēšana un izmantošana

create or replace procedure FIRMU_SKAITS(skaits OUT number) iscursor KURSORS_A isselect * from FIRMAS;

begin for m_raksts in KURSORS_A loop

skaits := KURSORS_A%ROWCOUNT; exit;end loop;

end;

declarem1 number default 0;

beginFIRMU_SKAITS(m1);

DBMS_OUTPUT.PUT_LINE('Firmu skaits = ' || m1);end;

Firmu skaits = 3

FIRMASF_NUM F_NOS DIBIN_DAT1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

12

Page 13: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL valodas procedūras piemērs

create or replace procedure PREMIJAS_APREKINS(raksts_1 IN TABULA_DARBINIEKI%rowtype,

premija IN OUT TABULA_DARBINIEKI.ALGA%type) IS kluda_premija EXCEPTION; - - īpašās situācijas definējumsbegin if raksts_1.ALGA is NULL then raise kluda_premija; else premija := raksts_1.ALGA * 0.05; end if; if raksts_1.pielikumi IS NOT NULL THEN premija := premija + raksts_1.pielikumi*0.15; end if; DBMS_OUTPUT.PUT_LINE('prēmija' || raksts_1.uzvards_vards || TOCHAR(premija));exception when kluda_premija THEN premija := 0; DBMS_OUTPUT.PUT_LINE('Nav prēmija' || raksts_1.uzvards_vards);end;

13

Page 14: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL valodas funkcijasFunkcijas ir nosaukti bloki un tās kompilētā veidā glabājas datu bāzē. Funkcijas tiek veidotas ar komandas CREATE OR REPLACE FUNCTION palīdzību. Tās tiek kompilētas un tad tiek saglabātas datu bāzē kompilētā veidā. Kompilēto kodu var izpildīt no cita PL/SQL bloka.Funkcijas definēšanas operatora sintakse ir sekojoša:

create or replace function FUNKCIJAS_NOSAUKUMS (

arguments_1 [IN vai OUT vai IN OUT] argumenta_tips,

arguments_2 [IN vai OUT vai IN OUT] argumenta_tips,

… ) RETURN funkcijas_vērtības_tips IS vai AS

funkcijas_ķermenis ; -- valodas PL/SQL bloks

Funkcijas ķermenī ar operatora return izteiksme vai objekts palīdzību tiek norādīta izteiksme funkcijas vērtības aprēķināšanai. Funkcijas var atgriezt vairāk kā vienu vērtību izmantojot OUT tipa argumentus.Funkcijas līdzīgi tabulām var tikt nodzēstas:

drop function FUNKCIJAS_NOSAUKUMS;

Lai izmainītu funkciju, tā vispirms ir jānodzēš un tad jāievada no jauna. Lai tas notiktu automātiski, CREATE operatorā tiek iekļauti slēgvārrdi OR REPLACE.

14

Page 15: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL funkcijas definēšana un izmantošana

create or replace function FIRMAS_DATI(f_numurs IN number) return FIRMAS%rowtype is

cursor KURSORS_A(num number) isselect * from FIRMAS where F_NUM = num;m_raksts FIRMAS%rowtype;

beginopen KURSORS_A(f_numurs);

fetch KURSORS_A into m_raksts;close KURSORS_A;return m_raksts;

end;

declarem1 number;raksts FIRMAS%rowtype;m_nos FIRMAS.F_NOS%type;m_dat FIRMAS.DIBIN_DAT%type;

beginm1 := 2;raksts := FIRMAS_DATI(m1);m_nos := raksts.F_NOS;m_dat := raksts.DIBIN_DAT;DBMS_OUTPUT.PUT_LINE('Firmas dati = ' || m_nos || ' ' || m_dat);

end;

Firmas dati = CCC 23-JAN-06

FIRMASF_NUM F_NOS DIBIN_DAT1 BBB 2005-FEB-152 CCC 2006-JAN-233 AAA 2007-DEC-6

15

Page 16: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL valodas funkcijas piemērs

create or replace function FUNKCIJA_1 (parametrs_1 Viesi.UZV%TYPE,parametrs_2 Viesi.UZV%TYPE,parametrs_3 NUMBER ) RETURN BOOLEAN ISmainīgais_1 NUMBER;mainīgais_2 CONSTANT NUMBER := 70;f_mainīgais BOOLEAN;main_1 Viesi.UZV%TYPE;main_2 Viesi.VAR%TYPE;main_3 Viesi.ALGA%TYPE;

begin- - Komentārsselect UZV,VAR, ALGA INTO main_1, main_2, main_3from Viesiwhere UZV = parametrs_1 AND VAR = parametrs_2;if main_3 >= 200 then f_mainīgais := TRUE; else f_mainīgais := FALSE;end if;

return f_mainīgais;end FUNKCIJA_1;

16

Page 17: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL apakšprogrammu glabāšanaVeidojot apakšprogrammas ar CREATE OR RAPLACE operatora palīdzību, tās tiek glabātas datu bāzes vārdnīcā nokompilētā veidā (p-koda veidā). Sākotnējais teksts tiek pārveidots speciālā formā, lai to PL/SQL apstrādes rogrammai būtu viegli izpildīt. P-kods ietver arī visas atsauces uz citām programmu vienībām. Apakšprogrammas var būt:1) lokālās programmas - tiek definētas PL/SQL bloka deklarāciju daļā;2) datu bāzē glabājamās programmas (stored procedures).Informāciju par programmām var gūt izmantojot datu vārdnīcas skatus. Visbiežāk tiek izmantotisekojoši skati:- skatā USER_OBJECTS glabājas dati par programmām;- skatā USER_SOURCE glabājas programmu teksti;- skatā USER_ERRORS glabājas kompilācijas kļūdas.

SELECT A.TEXT -- TEXT - tabulas lauka apzīmējumsFROM USER_SOURCE AWHERE name = 'PROCEDŪRA_1'ORDER BY A.LINE ; -- LINE - tabulas lauka apzīmējums

Izvadītais rezultāts: TEXT----------------------------------------procedure PROCEDURA_1 AS mainīgais_1 NUMBER;begin mainīgais_1 := 21;end;

Ja kompilējot apakšprogrammu kļūdu nav bijis, tad apakšprogrammas statuss ir VALID (izmantojama apakšprogramma), ja nē – INVALID (kļūdaina, neizmantojama apakšprogramma).Vidē SQL*Plus kompilācijas kļūdu paziņojumus var iegūt a komandu:

SHOW ERRORS;

Procedūru un funkciju pārkompilēšanu var veikt ar komandām:

ALTER PROCEDURE Procedūras_nosaukums COMPILE; ALTER FUNCTION Funkcijas_nosaukums COMPILE;

17

Page 18: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

PL/SQL iekšējā (lokālā) apakšprogramma

1. Iekšējo programmu apraksti tiek veidoti PL/SQL bloka deklarāciju daļā.

2. Tās ir izmantojamas tikai attiecīgajā blokā.

declare function IEKŠĒJĀ_FUNKCIJA_1 (parametrs_1 IN VARCHAR2, parametrs_2 IN VARCHAR2) return VARCHAR IS begin return parametrs_ 1 || ' ' || parametrs_2; end IEKŠĒJĀ_FUNKCIJA_1;begin …end;

3. Definējot apakšprogrammu, tās komponentēm ir jābūt jau iepriekš definētām, Ja tas tā nav, tad jāveic vismaz šo komponenšu iepriekšējā definešana (forward declaration), norādot tās nosaukumu un parametrus.

declare procedure PROCEDŪRA_3(parametrs_A IN OUT VARCHAR2); -- Iepriekšējā definēšana. …

18

Page 19: PL/SQL valodas procedūras  file · Web viewPL/SQL valodas procedūras

19