kintamųjų deklaravimas pl/sql

27
Kintamųjų deklaravimas PL/SQL Paskaita 2

Upload: vevina

Post on 22-Jan-2016

90 views

Category:

Documents


0 download

DESCRIPTION

Kintamųjų deklaravimas PL/SQL. Paskaita 2. Temos. Vardai (žymėjimai arba identifikatoriai) Kintamųjų naudojimas Kintamųjų paskelbimas ir inicializacija Duomenų tipai %TYPE atributas Bind (Įstatomi) kintamieji. SELECT first_name, department_id INTO v_fname, v_deptno FROM …. v_fname. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Kintamųjų deklaravimas  PL/SQL

Kintamųjų deklaravimas PL/SQL

Paskaita 2

Page 2: Kintamųjų deklaravimas  PL/SQL

Temos

• Vardai (žymėjimai arba identifikatoriai)• Kintamųjų naudojimas• Kintamųjų paskelbimas ir inicializacija• Duomenų tipai• %TYPE atributas• Bind (Įstatomi) kintamieji

Page 3: Kintamųjų deklaravimas  PL/SQL

Kintamųjų naudojimas

•Kintamieji g. b. naudojami:• Laikinam duomenų saugojimui• Saugomų reikšmių manipuliacijai• Pakartotinam naudojimui

SELECT first_name, department_id INTO v_fname,v_deptnoFROM …

v_fname

v_deptno

Jennifer

10

Page 4: Kintamųjų deklaravimas  PL/SQL

Vardai arba Žymėjimai

• Turi prasidėti raide• Gali susidėti iš raidžių ir skaičių• Galima naudoti simbolius ($, _, ir #)• Maksimalus ilgis 30 simbolių• Neturi būti Oracle rezervuoti žodžiai

Page 5: Kintamųjų deklaravimas  PL/SQL

Kintamųjų apdorojimas PL/SQL

• Kintamųjų paskelbimas ir inicializacija vyksta deklaravimo sekcijoje

• Kintamųjų panaudojimas ir naujų verčių priskyrimas vyksta vykdymo sekcijoje

• Galimas kintamųjų kaip parametrų perdavimas į PL/SQL paprogrames

• Panaudojimas PL/SQL paprogramių rezultatų saugojimui

Page 6: Kintamųjų deklaravimas  PL/SQL

PL/SQL Kintamųjų paskelbimas ir inicializacija

•Sintaksė:

•Pavyzdys:

identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];

DECLARE v_hiredate DATE; v_deptno NUMBER(2) NOT NULL := 10; v_location VARCHAR2(13) := 'Atlanta'; c_comm CONSTANT NUMBER := 1400;

Page 7: Kintamųjų deklaravimas  PL/SQL

PL/SQL Kintamųjų paskelbimas ir inicializacija

DECLARE v_myName VARCHAR2(20);BEGIN DBMS_OUTPUT.PUT_LINE('My name is: '|| v_myName); v_myName := 'John'; DBMS_OUTPUT.PUT_LINE('My name is: '|| v_myName);END;/

DECLARE v_myName VARCHAR2(20):= 'John';BEGIN v_myName := 'Steven'; DBMS_OUTPUT.PUT_LINE('My name is: '|| v_myName);END; /

1

2

Page 8: Kintamųjų deklaravimas  PL/SQL

Apribojimai

DECLARE v_event VARCHAR2(15);BEGIN v_event := q'!Father's day!'; DBMS_OUTPUT.PUT_LINE('3rd Sunday in June is : '|| v_event ); v_event := q'[Mother's day]'; DBMS_OUTPUT.PUT_LINE('2nd Sunday in May is : '|| v_event );END;/

Page 9: Kintamųjų deklaravimas  PL/SQL

Kintamųjų tipai

• PL/SQL kintamieji:• Skaliariniai• Sudėtinis• Referencinis• Large object (LOB)

• Ne-PL/SQL kintamieji: Bind kintamieji

Page 10: Kintamųjų deklaravimas  PL/SQL

Kintamųjų tipai

TRUE25-JAN-01

Atlanta256120.08

Snow WhiteLong, long ago,

in a land far, far away, there lived a princess called

Snow White. . .

Page 11: Kintamųjų deklaravimas  PL/SQL

PL/SQL Kintamųjų paskelbimo ir inicializacijos rekomendacijos

• Sukurti susitarimai kaip vadinti žymėjimus ir kt. objektus

• Kodo rašymas naudojant didžiąsias / mažąsias raides pagal Oracle rekomendacijas

• Inicializuokite kintamuosius aprašytus kaip NOT NULL ir CONSTANT

• Inicializuokite kintamąsias operatorių (:=) ir DEFAULT pagalba:

• Deklaruokite po vieną vardą arba žymėjimą vienoje eilutėje

v_myName VARCHAR2(20):='John';

v_myName VARCHAR2(20) DEFAULT 'John';

Page 12: Kintamųjų deklaravimas  PL/SQL

PL/SQL Kintamųjų paskelbimo rekomendacijos

• Kintamasis neturi būti pavadintas tuo pačiu vardu kaip DB lentelės stulpelio vardas

• .

• Nuduokite NOT NULL apribojimą jeigu kintamasis turi būti inicializuotas.

DECLARE employee_id NUMBER(6);BEGIN SELECT employee_id INTO employee_id FROM employees WHERE last_name = 'Kochhar';END;/

Page 13: Kintamųjų deklaravimas  PL/SQL

Skaliariniai duomenų tipai

• Priima vienintelę reikšmę• Neturi sudėtingos vidinės struktūros

Atlanta

TRUE 25-JAN-01

256120.08

The soul of the lazy man desires, and he has nothing; but the soul of the diligent

shall be made rich.

Page 14: Kintamųjų deklaravimas  PL/SQL

Pagrindiniai skaliariniai duomenų tipai

• CHAR [(maks. ilgis)]• VARCHAR2 (maks. ilgis)• NUMBER [(tikslumas, mastelis)]• BINARY_INTEGER• PLS_INTEGER• BOOLEAN• BINARY_FLOAT• BINARY_DOUBLE

Page 15: Kintamųjų deklaravimas  PL/SQL

Pagrindiniai skaliariniai duomenų tipai

• DATE• TIMESTAMP• TIMESTAMP WITH TIME ZONE• TIMESTAMP WITH LOCAL TIME ZONE• INTERVAL YEAR TO MONTH• INTERVAL DAY TO SECOND

Page 16: Kintamųjų deklaravimas  PL/SQL

Skaliarinių duomenų tipų deklaravimas•Pavyzdys:

DECLARE v_emp_job VARCHAR2(9); v_count_loop BINARY_INTEGER := 0; v_dept_total_sal NUMBER(9,2) := 0; v_orderdate DATE := SYSDATE + 7; c_tax_rate CONSTANT NUMBER(3,2) := 8.25; v_valid BOOLEAN NOT NULL := TRUE; ...

Page 17: Kintamųjų deklaravimas  PL/SQL

%TYPE atributas

• Naudojamas: • Deklaruoti kintamąjį pagal duomenų bazės stulpelio

tipą• Prieš tai deklaruoto kintamojo tipą

• Prieš %TYPE rašome:• Duomenų bazės lentelės ir stulpelio vardus• Jau deklaruotojo kintamojo vardą

Page 18: Kintamųjų deklaravimas  PL/SQL

Kintamųjų deklaravimas su%TYPE atributu•Sintaksė

•Pavyzdys

... emp_lname employees.last_name%TYPE;...

identifier table.column_name%TYPE;

... balance NUMBER(7,2); min_balance balance%TYPE := 1000;...

Page 19: Kintamųjų deklaravimas  PL/SQL

Boolean kintamųjų dekladavimas

• Tik TRUE, FALSE, ir NULL gali būti priskirti Boolean tipui.

• Sąlyginėse išraiškose naudojami loginiai operatoriai AND, OR ir unarinis operatorius NOT

• Kintamieji visada grąžina vieną iš šių reikšmių TRUE, FALSE arba NULL.

• Boolean reikšmė gali gražinti aritmetiniai, simboliniai ir datos išraiškos.

Page 20: Kintamųjų deklaravimas  PL/SQL

Bind kintamieji

•Bind kintamieji tai:• Aplinkos kintamieji

• Kartais vadinami host kintamieji

• Sukuriamos raktinio žodžio VARIABLE pagalba

• Naudojami SQL sakiniuose ir PL/SQL blokuose

• Pasiekiamos po PL/SQL bloko vykdymo

• Nuoroda į Bind kintamąjį yra (:)

Page 21: Kintamųjų deklaravimas  PL/SQL

Bind kintamųjų spausdinimas•Pavyzdys:

VARIABLE b_emp_salary NUMBERBEGIN SELECT salary INTO :b_emp_salary FROM employees WHERE employee_id = 178; END;/PRINT b_emp_salarySELECT first_name, last_name FROM employees WHERE salary=:b_emp_salary;

Page 22: Kintamųjų deklaravimas  PL/SQL

Bind kintamųjų spausdinimas•Pavyzdys:

VARIABLE b_emp_salary NUMBERSET AUTOPRINT ONDECLARE v_empno NUMBER(6):=&empno;BEGIN SELECT salary INTO :b_emp_salary FROM employees WHERE employee_id = v_empno; END;

7000

Output:

Page 23: Kintamųjų deklaravimas  PL/SQL

LOB duomenų tipas

Book(CLOB)

Photo(BLOB)

Movie(BFILE)

NCLOB

Page 24: Kintamųjų deklaravimas  PL/SQL

Sudėtinis duomenų tipas

TRUE 23-DEC-98 ATLANTA

1 5000

2 2345

3 12

4 3456

1 SMITH

2 JONES

3 NANCY

4 TIM

PL/SQL table structure PL/SQL table structure

PLS_INTEGER

VARCHAR2

PLS_INTEGER

NUMBER

Page 25: Kintamųjų deklaravimas  PL/SQL

Santrauka

•Sužinojome: • Vardai (žymėjimai arba identifikatoriai)

• Kintamųjų naudojimas

• Kintamųjų paskelbimas ir inicializacija

• Duomenų tipai• %TYPE atributas

• Bind (surišimo) kintamieji

Page 26: Kintamųjų deklaravimas  PL/SQL

Praktika 21. Vardai (žymėjimai arba identifikatoriai):

a.today

b.last_name

c.today’s_date

d.Number_of_days_in_February_this_year

e.Isleap$year

f. #number

g.NUMBER#

h.number1to7

2. Kintamųjų deklaravimas ir inicializavimas:

a.number_of_copies PLS_INTEGER;

b.printer_name constant VARCHAR2(10);

c.deliver_to VARCHAR2(10):=Johnson;

d.by_when DATE:= CURRENT_DATE+1;

Page 27: Kintamųjų deklaravimas  PL/SQL

Praktika 25. Edit the lab_02_04_soln.sql script.

a. Add code to create two bind variables. Create bind variables b_basic_percent and b_pf_percent of type NUMBER.

b.In the executable section of the PL/SQL block, assign the values 45 and 12 to b_basic_percent and b_pf_percent, respectively.

c. Terminate the PL/SQL block with “/” and display the value of the bind variables by using the PRINT command.

d. Execute and save your script file as lab_02_05_soln.sql. Sample output is as follows: