22
Vykdomųjų komandų rašymas Paskaita 3

Vykdomųjų komandų rašymas

  • Upload
    britain

  • View
    73

  • Download
    2

Embed Size (px)

DESCRIPTION

Vykdomųjų komandų rašymas. Paskaita 3. Temos. Žodinių vienetų naudojimas PL/SQL bloke SQL funkcijų naudojimas PL/SQL bloke Tiesioginis ir netiesioginis duomenų tipo konvertavimas Įdėtinių blokų rašymas ir žymėjimų naudojimas su kintamaisiais Programavimo rekomendacijos. - PowerPoint PPT Presentation

Citation preview

Page 1: Vykdomųjų komandų rašymas

Vykdomųjų komandų rašymas

Paskaita 3

Page 2: Vykdomųjų komandų rašymas

Temos

• Žodinių vienetų naudojimas PL/SQL bloke• SQL funkcijų naudojimas PL/SQL bloke• Tiesioginis ir netiesioginis duomenų tipo

konvertavimas • Įdėtinių blokų rašymas ir žymėjimų naudojimas

su kintamaisiais• Programavimo rekomendacijos

Page 3: Vykdomųjų komandų rašymas

Žodinių vienetų naudojimas PL/SQL bloke

• Žodinis vienetas:• Jų pagrindu kuriami visi PL/SQL blokai• Tai ženklų, tokių kaip raidės, skaičiai, simboliai,

tabuliacija, tarpas ir grąžinimas į vieną poziciją seka• Žodiniai vienetai gali būti suskirstyti į:

• Vardus (Identifiers): v_fname, c_percent• Skirtukus (Delimiters): ; , +, -• Žodžius (Literals): John, 428, True• Komentarus (Comments): --, /* */

Page 4: Vykdomųjų komandų rašymas

PL/SQL Bloko sintaksė ir jo rašymo rekomendacijos

• Žodžiai• Žodžiai susidedantys iš raidžių arba datos turi būti įterpti į viengubas kabutes

• Skaičiai gali būti užrašomi paprasta arba moksline forma

• Sakiniai gali tęstis per kelias eilutesname := 'Henderson';

1

2

3

Page 5: Vykdomųjų komandų rašymas

SQL funkcijos PL/SQL-e• Galimos procedūriniuose sakiniuose:

• Vienos eilutės skaitinės funkcijos• Vienos eilutės simbolinės funkcijos• Duomenų tipo konvertavimo funkcijos• Datos funkcijos• “Timestamp”• GREATEST ir LEAST• Kitos funkcijos

• Negalimos procedūriniuose sakiniuose:• DECODE• Grupavimo funkcijos (AVG,MIN,MAX)

Page 6: Vykdomųjų komandų rašymas

Kodo komentavimas

• Vienos eilutės komentarai(--).• Kelių eilučių komentarai / * ir */

• Pavyzdys:

DECLARE...v_annual_sal NUMBER (9,2);BEGIN /* Compute the annual salary based on the monthly salary input from the user */v_annual_sal := monthly_sal * 12;--The following line displays the annual salary DBMS_OUTPUT.PUT_LINE(v_annual_sal);END;/

Page 7: Vykdomųjų komandų rašymas

SQL funkcijos PL/SQL-e: Pavyzdžiai

• Eilutės ilgio nustatymas:

• Vardo konvertavimas į mažąsias raides :

v_desc_size INTEGER(5);v_prod_description VARCHAR2(70):='You can use this product with your radios for higher frequency';

-- get the length of the string in prod_descriptionv_desc_size:= LENGTH(v_prod_description);

v_ename:= LOWER (v_ename);

Page 8: Vykdomųjų komandų rašymas

Sekų naudojimas PL/SQL kode• Nuo 11g:

• Iki 11g:DECLARE v_new_id NUMBER;BEGIN SELECT my_seq.NEXTVAL INTO v_new_id FROM Dual;END;/

DECLARE v_new_id NUMBER;BEGIN v_new_id := my_seq.NEXTVAL;END;/

Page 9: Vykdomųjų komandų rašymas

Duomenų tipo konvertavimas

• Konvertuoja duomenis į palyginamus duomenų tipus• Yra dviejų tipų:

• Tiesioginis arba dinaminis (Implicit conversion)• Netiesioginis (Explicit conversion)

• Funkcijos:• TO_CHAR• TO_DATE• TO_NUMBER• TO_TIMESTAMP

Page 10: Vykdomųjų komandų rašymas

Duomenų tipo konvertavimas

date_of_joining DATE:= '02-Feb-2000';

date_of_joining DATE:= 'February 02,2000';

date_of_joining DATE:= TO_DATE('February 02,2000','Month DD, YYYY');

1

2

3

Page 11: Vykdomųjų komandų rašymas

Įdėtiniai blokai

• PL/SQL blokai gali būti įdėtiniai bet kurioje vietoje kur galimi vykdomieji sakiniai.

• Vykdomoje sekcijoje

(BEGIN … END)• Išimčių sekcijoje

(EXCEPTION).

Page 12: Vykdomųjų komandų rašymas

Įdėtiniai blokai : Pavyzdys

DECLARE v_outer_variable VARCHAR2(20):='GLOBAL VARIABLE';BEGIN DECLARE v_inner_variable VARCHAR2(20):='LOCAL VARIABLE'; BEGIN DBMS_OUTPUT.PUT_LINE(v_inner_variable); DBMS_OUTPUT.PUT_LINE(v_outer_variable); END; DBMS_OUTPUT.PUT_LINE(v_outer_variable); END;

Page 13: Vykdomųjų komandų rašymas

Kintamojo matomumo ir veikimo sritis

DECLARE v_father_name VARCHAR2(20):='Patrick'; v_date_of_birth DATE:='20-Apr-1972';BEGIN DECLARE v_child_name VARCHAR2(20):='Mike'; v_date_of_birth DATE:='12-Dec-2002'; BEGIN DBMS_OUTPUT.PUT_LINE('Father''s Name: '||v_father_name); DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth); DBMS_OUTPUT.PUT_LINE('Child''s Name: '||v_child_name); END; DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth); END;/

1

2

Page 14: Vykdomųjų komandų rašymas

Vardo žymėjimasBEGIN <<outer>>DECLARE v_father_name VARCHAR2(20):='Patrick'; v_date_of_birth DATE:='20-Apr-1972';BEGIN DECLARE v_child_name VARCHAR2(20):='Mike'; v_date_of_birth DATE:='12-Dec-2002'; BEGIN DBMS_OUTPUT.PUT_LINE('Father''s Name: '||v_father_name); DBMS_OUTPUT.PUT_LINE('Date of Birth: ' ||outer.v_date_of_birth); DBMS_OUTPUT.PUT_LINE('Child''s Name: '||v_child_name); DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth); END;END;END outer;

Page 15: Vykdomųjų komandų rašymas

Kintamojo matomumo sritisBEGIN <<outer>>DECLARE v_sal NUMBER(7,2) := 60000; v_comm NUMBER(7,2) := v_sal * 0.20; v_message VARCHAR2(255) := ' eligible for commission';BEGIN DECLARE v_sal NUMBER(7,2) := 50000; v_comm NUMBER(7,2) := 0; v_total_comp NUMBER(7,2) := v_sal + v_comm; BEGIN v_message := 'CLERK not'||v_message; outer.v_comm := v_sal * 0.30; END; v_message := 'SALESMAN'||v_message;

END;END outer;/

1

2

Page 16: Vykdomųjų komandų rašymas

PL/SQL Operatoriai

• Loginiai• Aritmetiniai• Sujungimo• Skliaustai operacijų

eiliškumui nurodyti

• Laipsnio (**)

Tokie kaip SQL

Page 17: Vykdomųjų komandų rašymas

PL/SQL Operatoriai: Pavyzdžiai

• Ciklo skaitliuko padidinimas.

• Priskiria reikšmę BOOLEAN vėliavėlei.

• Tikrina ar darbuotojo numeris turi reikšmę.

loop_count := loop_count + 1;

good_sal := sal BETWEEN 50000 AND 150000;

valid := (empno IS NOT NULL);

Page 18: Vykdomųjų komandų rašymas

Programavimo rekomendacijos

• Kodo palaikymą lengvina:• Kodo dokumentacija naudojant komentarus• Kodo rašymas naudojant didžiąsias / mažąsias

raides pagal Oracle rekomendacijas• Sukurti susitarimai kaip vadinti žymėjimus ir kt.

objektus• Atitraukimai lengvinantys kodo skaitymą

Page 19: Vykdomųjų komandų rašymas

Kodo atitraukimai

• Kad būtų aiškiau, kiekvieną kodo lygį reikia atitraukti

BEGIN IF x=0 THEN y:=1; END IF;END;/

DECLARE deptno NUMBER(4); location_id NUMBER(4);BEGIN SELECT department_id, location_id INTO deptno,

location_id FROM departments WHERE department_name = 'Sales'; ...END;/

Page 20: Vykdomųjų komandų rašymas

Klausimas

• PL/SQL išraiškose galime nauduoti daugumą vienos eilutės SQL funkcijų, tokias kaip skaičių, simbolių, konvertavimo ir datos vienos eilutės funkcijas.

1. True

2. False

Page 21: Vykdomųjų komandų rašymas

Santrauka

• Sužinojome : • PL/SQL bloko sintaksę ir kodavimo rekomendacijas• Kaip teisingai naudoti žymėjimus/vardus• PL/SQL bloko struktūrą: įdėtiniai bloko ir srities taisyklės• PL/SQL programavimas

• Funkcijos• Duomenų tipo konvertavimas• Operatoriai• Susitarimai ir rekomendacijos

Page 22: Vykdomųjų komandų rašymas

Praktika 3:

• This practice covers the following topics:• Reviewing scoping and nesting rules

• Writing and testing PL/SQL blocks