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: