Declaring PL/SQL Variables

Download Report

Transcript Declaring PL/SQL Variables

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

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_deptno FROM … Jennifer v_fname 10 v_deptno

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

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

PL/SQL Kintamųjų paskelbimas ir inicializacija

• Sintaksė:

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

• Pavyzdys:

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

PL/SQL Kintamųjų paskelbimas ir inicializacija

1 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; 2 DECLARE / v_myName VARCHAR2(20):= 'John'; BEGIN v_myName := 'Steven'; DBMS_OUTPUT.PUT_LINE('My name is: '|| v_myName); END;

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;

Kintamųjų tipai

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

Kintamųjų tipai

TRUE 256120.08

25-JAN-01 Snow White Long, long ago, in a land far, far away, there lived a princess called Snow White. . . Atlanta

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 NULL ir CONSTANT NOT • Inicializuokite kintamąsias operatorių (:=) ir

v_myName VARCHAR2(20):='John';

DEFAULT pagalba:

v_myName VARCHAR2(20) DEFAULT 'John';

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

PL/SQL Kintamųjų paskelbimo rekomendacijos

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

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

• Nuduokite NOT NULL būti inicializuotas.

apribojimą jeigu kintamasis turi

Skaliariniai duomenų tipai

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

TRUE 256120.08

25-JAN-01 The soul of the lazy man desires, and he has nothing; but the soul of the diligent shall be made rich.

Atlanta

Pagrindiniai skaliariniai duomenų tipai

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

Pagrindiniai skaliariniai duomenų tipai

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

Skaliarinių duomenų tipų deklaravimas

• Pavyzdys:

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

%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ą

Kintamųjų deklaravimas su

%TYPE

atributu

• Sintaksė

identifier

• Pavyzdys

table.column_name%TYPE; ...

emp_lname employees.last_name%TYPE; ...

...

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

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.

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 (:)

Bind kintamųjų spausdinimas

• Pavyzdys:

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

Bind kintamųjų spausdinimas

• Pavyzdys:

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

Output:

7000

LOB

duomenų tipas

Book

( CLOB )

Photo

( BLOB )

Movie

( BFILE ) NCLOB

Sudėtinis duomenų tipas

TRUE 23-DEC-98 ATLANTA

PL/SQL table structure

1 2 3 4 SMITH JONES NANCY TIM VARCHAR2 PLS_INTEGER

PL/SQL table structure

1 2 3 4 5000 2345 12 3456 NUMBER PLS_INTEGER

Santrauka

• Sužinojome: • Vardai (žymėjimai arba identifikatoriai) • Kintamųjų naudojimas • Kintamųjų paskelbimas ir inicializacija • Duomenų tipai • %TYPE atributas • Bind (surišimo) kintamieji

Praktika 2

1. 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 c.

deliver _ to d.

by_when constant VARCHAR2(10) DATE := VARCHAR2(10) :=Johnson; CURRENT_DATE ; +1;

Praktika 2

5. Edit the lab_02_04_soln.sql

script. a. Add code to create two bind variables. Create bind variables b_basic_percent type NUMBER .

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

and 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: