Title: Kintamuju%20deklaravimas%20PL/SQL
1Kintamuju deklaravimas PL/SQL
2Temos
- Vardai (žymejimai arba identifikatoriai)
- Kintamuju naudojimas
- Kintamuju paskelbimas ir inicializacija
- Duomenu tipai
- TYPE atributas
- Bind (Istatomi) kintamieji
3Kintamuju naudojimas
- Kintamieji g. b. naudojami
- Laikinam duomenu saugojimui
- Saugomu reikšmiu manipuliacijai
- Pakartotinam naudojimui
4Vardai arba Žymejimai
- Turi prasideti raide
- Gali susideti iš raidžiu ir skaiciu
- Galima naudoti simbolius (, _, ir )
- Maksimalus ilgis 30 simboliu
- Neturi buti Oracle rezervuoti žodžiai
5Kintamuju apdorojimas PL/SQL
- Kintamuju paskelbimas ir inicializacija vyksta
deklaravimo sekcijoje - Kintamuju panaudojimas ir nauju verciu
priskyrimas vyksta vykdymo sekcijoje - Galimas kintamuju kaip parametru perdavimas i
PL/SQL paprogrames - Panaudojimas PL/SQL paprogramiu rezultatu
saugojimui
6PL/SQL Kintamuju paskelbimas ir inicializacija
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
7PL/SQL Kintamuju 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
8Apribojimai
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 /
9Kintamuju tipai
- PL/SQL kintamieji
- Skaliariniai
- Sudetinis
- Referencinis
- Large object (LOB)
- Ne-PL/SQL kintamieji Bind kintamieji
10Kintamuju tipai
11PL/SQL Kintamuju paskelbimo ir inicializacijos
rekomendacijos
- Sukurti susitarimai kaip vadinti žymejimus ir kt.
objektus - Kodo rašymas naudojant didžiasias / mažasias
raides pagal Oracle rekomendacijas - Inicializuokite kintamuosius aprašytus kaip NOT
NULL ir CONSTANT - Inicializuokite kintamasias operatoriu () ir
DEFAULT pagalba - Deklaruokite po viena varda arba žymejima vienoje
eiluteje
v_myName VARCHAR2(20)'John'
v_myName VARCHAR2(20) DEFAULT 'John'
12PL/SQL Kintamuju paskelbimo rekomendacijos
- Kintamasis neturi buti pavadintas tuo paciu vardu
kaip DB lenteles stulpelio vardas - .
- Nuduokite NOT NULL apribojima jeigu kintamasis
turi buti inicializuotas.
DECLARE employee_id NUMBER(6) BEGIN SELECT
employee_id INTO employee_id
FROM employees WHERE last_name
'Kochhar' END /
13Skaliariniai duomenu tipai
- Priima vienintele reikšme
- Neturi sudetingos vidines strukturos
14Pagrindiniai skaliariniai duomenu tipai
- CHAR (maks. ilgis)
- VARCHAR2 (maks. ilgis)
- NUMBER (tikslumas, mastelis)
- BINARY_INTEGER
- PLS_INTEGER
- BOOLEAN
- BINARY_FLOAT
- BINARY_DOUBLE
15Pagrindiniai skaliariniai duomenu tipai
- DATE
- TIMESTAMP
- TIMESTAMP WITH TIME ZONE
- TIMESTAMP WITH LOCAL TIME ZONE
- INTERVAL YEAR TO MONTH
- INTERVAL DAY TO SECOND
16Skaliariniu duomenu tipu deklaravimas
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 ...
17TYPE atributas
- Naudojamas
- Deklaruoti kintamaji pagal duomenu bazes
stulpelio tipa - Prieš tai deklaruoto kintamojo tipa
- Prieš TYPE rašome
- Duomenu bazes lenteles ir stulpelio vardus
- Jau deklaruotojo kintamojo varda
18Kintamuju deklaravimas suTYPE atributu
identifier table.column_nameTYPE
... emp_lname employees.last_nameTYPE ...
... balance NUMBER(7,2) min_balance
balanceTYPE 1000 ...
19Boolean kintamuju dekladavimas
- Tik TRUE, FALSE, ir NULL gali buti priskirti
Boolean tipui. - Salyginese išraiškose naudojami loginiai
operatoriai AND, OR ir unarinis operatorius NOT - Kintamieji visada gražina viena iš šiu reikšmiu
TRUE, FALSE arba NULL. - Boolean reikšme gali gražinti aritmetiniai,
simboliniai ir datos išraiškos.
20Bind 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 i Bind kintamaji yra ()
21Bind kintamuju spausdinimas
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 salaryb_emp_salary
22Bind kintamuju spausdinimas
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
23LOB duomenu tipas
Book (CLOB)
Photo (BLOB)
Movie (BFILE)
NCLOB
24Sudetinis duomenu tipas
25Santrauka
- Sužinojome
- Vardai (žymejimai arba identifikatoriai)
- Kintamuju naudojimas
- Kintamuju paskelbimas ir inicializacija
- Duomenu tipai
- TYPE atributas
- Bind (surišimo) kintamieji
26Praktika 2
- 1. Vardai (žymejimai arba identifikatoriai)
- a. today
- b. last_name
- c. todays_date
- d. Number_of_days_in_February_this_year
- e. Isleapyear
- f. number
- g. NUMBER
- h. number1to7
- 2. Kintamuju 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_DATE1
27Praktika 2
- 3. Pasirinkite teisinga atsakyma.
- DECLARE
- v_fname VARCHAR2(20)
- v_lname VARCHAR2(15) DEFAULT 'fernandez'
- BEGIN
- DBMS_OUTPUT.PUT_LINE(v_fname ' ' v_lname)
- END
- /
- a. The block executes successfully and prints
fernandez. - b. The block returns an error because the fname
variable is used without initializing. - c. The block executes successfully and prints
null fernandez. - d. The block returns an error because you cannot
use the DEFAULT keyword to initialize a variable
of type VARCHAR2. - e. The block returns an error because the v_fname
variable is not declared.
28Praktika 2
- Create an anonymous block. In SQL Developer, load
the lab_01_02_soln.sql script, which you created
in question 2 of practice 1. - a. Add a declarative section to this PL/SQL
block. In the declarative section, declare the
following variables - 1. Variable v_today of type DATE. Initialize
today with SYSDATE. - 2. Variable v_tomorrow of type today. Use TYPE
attribute to declare this variable. - In the executable section, initialize the
tomorrow variable with an expression, which
calculates tomorrows date (add one to the value
in today). Print the value of today and tomorrow
after printing Hello World. - Execute and save this script as
lab_02_04_soln.sql. Sample output is as follows
29Praktika 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