270 likes | 501 Views
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.
E N D
Kintamųjų deklaravimas PL/SQL Paskaita 2
Temos • Vardai (žymėjimai arba identifikatoriai) • Kintamųjų naudojimas • Kintamųjų paskelbimas ir inicializacija • Duomenų tipai • %TYPEatributas • Bind (Įstatomi)kintamieji
SELECT first_name, department_id INTO v_fname,v_deptnoFROM … v_fname Jennifer v_deptno 10 Kintamųjų naudojimas • Kintamieji g. b. naudojami: • Laikinam duomenų saugojimui • Saugomų reikšmių manipuliacijai • Pakartotinam naudojimui
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ė: • 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;
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; / 1 DECLARE v_myName VARCHAR2(20):= 'John'; BEGIN v_myName := 'Steven'; DBMS_OUTPUT.PUT_LINE('My name is: '|| v_myName); END; / 2
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
25-JAN-01 TRUE Snow White Long, long ago, in a land far, far away, there lived a princess called Snow White. . . 256120.08 Atlanta Kintamųjų tipai
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 kaipNOT NULLir CONSTANT • Inicializuokite kintamąsias operatorių (:=) ir DEFAULTpagalba: • Deklaruokite po vieną vardą arba žymėjimą vienoje eilutėje v_myName VARCHAR2(20):='John'; v_myName VARCHAR2(20) DEFAULT 'John';
PL/SQL Kintamųjų paskelbimo rekomendacijos • Kintamasis neturi būti pavadintas tuo pačiu vardu kaip DB lentelės stulpelio vardas • . • Nuduokite NOT NULLapribojimą 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; /
The soul of the lazy man desires, and he has nothing; but the soul of the diligent shall be made rich. TRUE 25-JAN-01 256120.08 Atlanta Skaliariniai duomenų tipai • Priima vienintelę reikšmę • Neturi sudėtingos vidinės struktūros
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 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; ...
%TYPEatributas • Naudojamas: • Deklaruoti kintamąjį pagal duomenų bazės stulpelio tipą • Prieš tai deklaruoto kintamojo tipą • Prieš %TYPErašome: • Duomenų bazės lentelės ir stulpelio vardus • Jau deklaruotojo kintamojo vardą
Kintamųjų deklaravimas su%TYPEatributu • Sintaksė • Pavyzdys identifier 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 NULLgali būti priskirti Boolean tipui. • Sąlyginėse išraiškose naudojami loginiai operatoriai AND, ORir 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 datosišraiškos.
Bind kintamieji • Bind kintamieji tai: • Aplinkos kintamieji • Kartais vadinami hostkintamieji • Sukuriamos raktinio žodžio VARIABLEpagalba • 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
LOBduomenų tipas Book (CLOB) Photo (BLOB) Movie (BFILE) NCLOB
TRUE 23-DEC-98 ATLANTA PL/SQL table structure PL/SQL table structure 1 SMITH 2 JONES 3 NANCY 4 TIM 1 5000 2 2345 3 12 4 3456 VARCHAR2 NUMBER PLS_INTEGER PLS_INTEGER Sudėtinis duomenų tipas
Santrauka • Sužinojome: • Vardai (žymėjimai arba identifikatoriai) • Kintamųjų naudojimas • Kintamųjų paskelbimas ir inicializacija • Duomenų tipai • %TYPEatributas • 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_copiesPLS_INTEGER; b. printer_name constant VARCHAR2(10); c. deliver_toVARCHAR2(10):=Johnson; d. by_whenDATE:= 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 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: