Professional Documents
Culture Documents
net
o to Oracle c bn
Gio trnh SQL v PL/SQL
Trang 2
Mc lc
Mc lc .................................................................................................................................................3
1
Gii thiu.......................................................................................................................................6
1.1
1.2
1.3
1.4
1.5
1.6
1.7
2.7
Cc hm s........................................................................................................................................20
Cc hm k t ...................................................................................................................................22
Cc hm ngy ...................................................................................................................................26
Cc hm chuyn i kiu.................................................................................................................28
Bi tp................................................................................................................................................29
Bi tp................................................................................................................................................32
6.1
6.2
6.3
7
Bin runtime..............................................................................................................................31
5.1
6
Bi tp................................................................................................................................................14
4.1
4.2
4.3
4.4
4.5
5
3.1
3.2
3.3
3.4
4
2.1
2.2
2.3
2.4
2.5
2.6
7.1
Trang 3
8.1
8.2
9
9.1
9.2
9.3
10
11
To table ...................................................................................................................................44
11.1
11.2
11.3
11.4
CHAR ....................................................................................................................47
VARCHAR2...........................................................................................................48
VARCHAR.............................................................................................................48
NUMBER...............................................................................................................48
FLOAT...................................................................................................................48
LONG ....................................................................................................................49
DATE.....................................................................................................................49
RAW v LONG RAW ............................................................................................50
ROWID ..................................................................................................................50
MLSLABEL............................................................................................................50
Chuyn i kiu ....................................................................................................50
11.5 Constraint..........................................................................................................................................51
11.6 Bi tp................................................................................................................................................52
12
Xa table ...............................................................................................................53
Gii thch bng ......................................................................................................53
Thay i tn object................................................................................................53
Xa d liu ca table.............................................................................................53
13.1
13.2
13.3
13.4
13.5
13.6
14
Sequence v index..................................................................................................................57
Trang 4
To Sequence.......................................................................................................57
Xo v sa sequence ...........................................................................................58
To view ......................................................................................................................................59
15.1 View....................................................................................................................................................59
15.2 Bi tp................................................................................................................................................61
16
Quyn v bo mt ...................................................................................................................61
18.1
18.2
18.3
18.4
18.5
19
cursor ........................................................................................................................................68
19.1
19.2
19.3
19.4
19.5
20
IF ........................................................................................................................................................66
LOOP v EXIT....................................................................................................................................66
FOR ....................................................................................................................................................67
WHILE ................................................................................................................................................67
GOTO .................................................................................................................................................67
nh ngha .........................................................................................................................................68
Kiu d liu Table v Record...........................................................................................................69
Sao kiu d liu ................................................................................................................................70
Cu lnh SELECT... INTO... trong PL/SQL......................................................................................70
Bi tp................................................................................................................................................70
procedure v funtion..........................................................................................................71
pakage.........................................................................................................................................73
23.1 Bi tp................................................................................................................................................78
Trang 5
Gii thiu
1.1
Mc tiu kho hc
Hiu c phng php, cc thnh phn, thut ng v thao tc trong CSDL quan h
1.2
1.2.1
Khi ng my ch
Bt dch v OracleServiceXXX (trong XXX l tn ca CSDL) bng cch nhn vo Start -> Program > Service -> OracleServiceXXX -> Nhn chut phi -> Nhn Start. Ch ch bt dch v ny khi ngi
ci t khng ch t ng hay khi dch v ny cha c bt.
Tt dch v OracleServiceXXX (trong XXX l tn ca CSDL) bng cch nhn vo Start -> Program > Service -> OracleServiceXXX -> Nhn chut phi -> Nhn Stop.
Shutdown my ch.
1.2.2
Cc ng dng ca oracle chy trong mi trng Windows vi giao din graphic, cc ng dng thng dng
c SQL*Plus, Oracle Form, Oracle Report, Oracle Designer ... Vic chy cc ng dng ny hon ton ging
nh vic chy cc ng dng thng thng trong mi trng windows.
lm vic vi cc ng dng truy cp CSDL Oracle, ngi s dng (NSD) phi connect vo CSDL. C hai
cch connect.
Connect NSD/password, v d NSD tn Scott c password l tiger th
Connect Scott/tiger
Trang 6
1.3
1.3.1
M hnh c s d liu (CSDL) quan h do E.F Codd a ra vo u thp k 70, t n nay n lin tc
pht trin tr thnh m hnh CSDL ph bin bc nht (RDBMS). M hnh quan h gm cc thnh phn sau:
Tp hp cc x l tc ng ti cc quan h
SQL (Structured Query Language, c l "sequel") l tp lnh truy xut CSDL quan h. Ngn ng SQL c
IBM s dng u tin trong h qun tr CSDL System R vo gia nhng nm 70, h ngn ng SQL u tin
(SEQUEL2) c IBM cng b vo thng 11 nm 1976. Nm 1979, tp on ORACLE gii thiu thng
phm u tin ca SQL, SQL cng c ci t trong cc h qun tr CSDL nh DB2 ca IBM v SQL/DS.
Ngy nay, SQL c s dng rng ri v uc xem l ngn ng chun truy cp CSDL quan h.
1.3.2
Chun SQL
Nm 1989, vin tiu chun quc gia Hoa k (ANSI) cng nhn SQL l ngn ng chun truy cp CSDL
quan h trong vn bn ANSI SQL89.
Nm 1989, t chc tiu chun quc t (ISO) cng nhn SQL ngn ng chun truy cp CSDL quan h
trong vn bn ISO 9075-1989.
Tt c cc h qun tr CSDL ln trn th gii cho php truy cp bng SQL v hu ht theo chun ANSI.
1.4
Table
Row
Column
hin th mt loi d liu trong bng, v d tn phng ban trong bng phng ban. Ngi ta th
hin n thng qua tn column v gi s liu di cc kiu v kch c nht nh.
Field
l giao ca column v row. Field chnh l ni cha d liu. Nu khng c d liu trong field
ngi ta ni field c gia tr l null.
Primary Key l mt column hoc mt tp cc column xc nh tnh duy nht ca cc row trong bng. V d
m phng ban. Primary Key nht thit phi c s liu.
Foreign Key l mt column hoc mt tp cc column tham chiu ti chnh bng hoc mt bng khc.
Foreign Key xc nh mi quan h gia cc bng.
Constraint
Trang 7
V d:
EMP
EMPNO
DEPT
ENAME
DEPTNO
EMP
7369
Row
DEPTNO
DNAME
DEPT
SMITH
20
10
ACCOUNTING
7499
ALLEN
30
20
RESEARCH
7521
WARD
30
7566
JONES
20
30
SALES
7654
MARTIN
30
40
OPERATIONS
7698
BLAKE
30
7782
CLARK
10
Foreign key
Primary key
Column
1.5
Table
View
Sequence
Index
Synonym
tn tng ng ca i tng
1.6
Cc lnh SQL
Lnh
SELECT
INSERT
UPDATE
DELETE
CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMIT
ROLLBACK
SAVE POINT
GRANT
REVOKE
M t
L lnh thng dng nht, dng ly, xem d liu trong CSDL.
L 3 lnh dng nhp thm nhng row mi, thay i ni dung d liu trn cc row
hay xo cc row trong table. Nhng lnh ny c gi l cc lnh thao tc d liu
DML (Data Manipulation Language)
L 3 lnh dng thit lp, thay i hay xo b cu trc d liu nh l table, view,
index. Nhng lnh ny c gi l cc lnh nh ngha d liu DDL (Data Definition
Language)
Qun l vic thay i d liu bng cc lnh DML. Vic thay i d liu c th c
nhm li thnh cc transaction.
2 lnh ny dng gn hoc hu cc quyn truy nhp vo CSDL Oracle v cc cu
trc bn trong n. Nhng lnh ny c gi l cc lnh iu khin d liu DCL (Data
Trang 8
1.7
1.7.1
DEPT
EMP
SALGRADE
DUMMY
1.7.2
BONUS
M t d liu
Tn
Kiu
Kho
Gii thch
DEPTNO
PK
M phng ban
DNAME
CHAR(14)
Tn phng ban
LOC
CHAR(13)
a ch
DEPT
SALGRADE
GRADE
NUMBER
LOSAL
NUMBER
PK
Mc lng
Gi tr thp
HISAL
NUMBER
Gi tr cao
EMP
EMPNO
ENAME
CHAR(10),
JOB
CHAR(9),
MGR
NUMBER(4)
HIREDATE
DATE
SAL
NUMBER(7,2)
Lng
COMM
NUMBER(7,2)
DEPTNO
PK
M nhn vin
Tn nhn vin
Ngh nghip
FK (EMP.EMPNO)
M ngi qun l
Thng
FK (DEPT.DEPTNO)
M phng ban
Trang 9
Lnh truy vn c bn
2.1
Lnh truy vn c bn
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
SELECT
1 column.
FROM
alias
Vd:
SELECT * FROM emp;
SELECT empno, ename, deptno, mgr FROM emp;
SELECT DISTINCT job nghenghiep FROM emp;
2.2
Column alias
Literal
FROM emp;
Trang 10
Literal
Trong mnh SELECT, literal l bt k k t no, biu thc, hay s np m khng phi l column hoc
column alias. Vd:
SELECT empno||ename EMPLOYEE, WORK IN DEPARTMENT, deptno FROM emp;
2.3
Gi tr Null
2.4
Trang 11
2.5
C php
DESC[RIBE] table_name
(lnh ny ch chy c trn sqlplus, khng chy c trn PL/SQL Develop)
V d:
DESC emp;
Name
Null?
Type
------------------------------- -------- ---EMPNO
NOT NULL NUMBER(4)
ENAME
VARCHAR2(10)
JOB
VARCHAR2(9)
MGR
NUMBER(4)
HIREDATE
DATE
SAL
NUMBER(7,2)
COMM
NUMBER(7,2)
DEPTNO
NUMBER(2)
Kiu d liu NOT NULL ngha l column nht nh phi c gi tr.
2.6
2.6.1
Lnh
M t
A[PPEND] text
C[HANGE] /old/new
C[HANGE] /text/
CL[EAR] BUFF[ER]
DEL
Xo dng hin ti
DEL n
Xo dng n
DEL m n
Xo dng t m n n
I[NPUT]
I[NPUT] text
L[IST]
L[IST] n
Lit k dng n
L[IST] m n
Lit k dng m n n
Trang 12
Nhy n dng n
N text
0 text
2.6.2
Cc lnh v file
Lnh
M t
@ filename [.ext]
ED[IT]
EXIT
2.6.3
C php
COLUMN [{column | alias} [option]]
Lnh
M t
CLE[AR]
Xo nh dng ca column
FOR[MAT] format
HEA[DING] text
t nhn co column
JUS[TIFY] align
NOPRI[NT]
n column
NUL[L] text
PRI[NT}
Hin th column
Trang 13
WRA[PPED]
WOR[D_WAPPED]
M t
V d
Kt qu
An
999999
1234
Hin th c s 0
099999
01234
Hin thi $
$9999
$1234
Hin th k t L
L9999
L1234
9999.99
1234.00
9,999
1,234
2.7
Bi tp
Trang 14
7698
7698
7698
7698
7698
7566
7902
7566
7788
7782
28-09-1981
20-02-1981
08-09-1981
03-12-1981
22-02-1981
03-12-1981
17-12-1980
09-12-1982
12-01-1983
23-01-1982
1250
1600
1500
950
1250
3000
800
3000
1100
1300
1400
300
0
500
30
30
30
30
30
20
20
20
20
10
JOB
--------ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
4. Hin th tn nhn vin v thu nhp trong mt nm (REMUNERATION)
ENAME
REMUNERATION
---------- -----------KING
60000
BLAKE
34200
CLARK
29400
JONES
35700
MARTIN
16400
ALLEN
19500
TURNER
18000
JAMES
11400
WARD
15500
FORD
36000
SMITH
9600
SCOTT
36000
ADAMS
13200
MILLER
15600
14 rows selected.
5. Hin th theo ni dung di y
Who, what and when
---------------------------------------------------------------------KING
HAS HELP THE POSITION OF PRESIDENT IN DEPT 10 SINCE 17-11-1981
BLAKE HAS HELP THE POSITION OF MANAGER
IN DEPT 30 SINCE 01-05-1981
CLARK HAS HELP THE POSITION OF MANAGER
IN DEPT 10 SINCE 09-06-1981
JONES HAS HELP THE POSITION OF MANAGER
IN DEPT 20 SINCE 02-04-1981
MARTIN HAS HELP THE POSITION OF SALESMAN IN DEPT 30 SINCE 28-09-1981
ALLEN HAS HELP THE POSITION OF SALESMAN IN DEPT 30 SINCE 20-02-1981
TURNER HAS HELP THE POSITION OF SALESMAN IN DEPT 30 SINCE 08-09-1981
JAMES HAS HELP THE POSITION OF CLERK
IN DEPT 30 SINCE 03-12-1981
WARD
HAS HELP THE POSITION OF SALESMAN IN DEPT 30 SINCE 22-02-1981
FORD
HAS HELP THE POSITION OF ANALYST
IN DEPT 20 SINCE 03-12-1981
SMITH HAS HELP THE POSITION OF CLERK
IN DEPT 20 SINCE 17-12-1980
SCOTT HAS HELP THE POSITION OF ANALYST
IN DEPT 20 SINCE 09-12-1982
ADAMS HAS HELP THE POSITION OF CLERK
IN DEPT 20 SINCE 12-01-1983
MILLER HAS HELP THE POSITION OF CLERK
IN DEPT 10 SINCE 23-01-1982
14 rows selected.
6. Hin th cu trc bng emp;
7. Thay i nhn v nh dng hin th ca ct sal v hiredate trong bng emp;
Trang 15
3.1
Mnh ORDER BY
C php
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
[WHERE condition]
[ORDER BY expr/position [DESC/ASC]]
Mnh ORDER BY dng sp xp s liu c hin th v phi t v tr sau cng ca cu lnh truy
vn, V d:
SELECT ENAME, JOB, SAL*12, DEPTNO
FROM EMP
ORDER BY ENAME;
Mnh ORDER BY mc nh sp xp theo th t tng dn ASC[ENDING]
S thp trc
Ngy nh trc
K t theo bng ch ci
3.2
Mnh WHERE
C php
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
[WHERE condition (s)]
[ORDER BY expr/position [DESC/ASC]]
o to c bn: SQL v PL/SQL
Trang 16
Tn column
Ton t so snh
V d:
SELECT DEPTNO, JOB, ENAME, SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000 ;
Truy vn d liu vi nhiu iu kin
Mnh WHERE cho php ghp c nhiu iu kin thng qua cc ton t logic AND/OR. Ton t AND
yu cu d liu phi tho mn c 2 iu kin. Ton t OR cho php d liu tho mn 1 trong 2 iu kin. V
d:
SELECT DEPTNO, JOB, ENAME, SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000
AND JOB = MANAGER;
SELECT DEPTNO, JOB, ENAME, SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000
OR JOB = MANAGER;
SELECT DEPTNO, JOB, EMPNO, ENAME, SAL
FROM EMP
WHERE SAL > 1500
AND JOB = MANAGER
OR JOB =SALESMAN;
SELECT DEPTNO, JOB, EMPNO, ENAME, SAL
FROM EMP
WHERE SAL > 1500
AND (JOB = MANAGER
OR JOB =SALESMAN);
3.3
Cc ton t
Ton t so snh
>
: Ton t ln hn
<
: Ton t nh hn
>=
<=
Cc ton t logic
NOT
: Ph nh mnh
AND
Trang 17
IN (danh sch)
x [NOT] LIKE y
: ng nu x [khng] ging khung mu y.
Cc k t dng trong khun mu:
Du gch di ( _ )
: Ch mt k t bt k
Du phn trm ( % ) : Ch mt nhm k t bt k
IS [NOT] NULL
EXISTS
: Tr v TRUE nu c tn ti.
Trang 18
3.4
Bi tp
1. Chn nhn vin trong bng EMP c mc lng t 1000 n 2000 (chn cc trng ENAME, DEPTNO,
SAL).
ENAME
DEPTNO
SAL
---------- ---------- ---------ALLEN
30
1600
WARD
30
1250
MARTIN
30
1250
TURNER
30
1500
ADAMS
20
1100
MILLER
10
1300
Sal Between 1000 to 2000
2.Hin th m phng ban, tn phng ban, sp xp theo th t tn phng ban.
DEPTNO
-----10
40
20
30
DNAME
----------ACCOUNTING
OPERATIONS
RESEARCH
SALES
Order by dname
3. Hin th danh sch nhng nhn vin lm ti phng 10 v 20 theo th t A,B,C
EMPNO
---------7876
7782
7902
7566
7839
7934
7788
7369
ENAME
JOB
MGR HIREDATE
SAL COMM DEPTNO
----------------- ----- ---------- ---------- ----- ----ADAMS
CLERK
7788 12-01-1983
1100
20
CLARK
MANAGER
7839 09-06-1981
2450
10
FORD
ANALYST
7566 03-12-1981
3000
20
JONES
MANAGER
7839 02-04-1981
2975
20
KING
PRESIDENT
17-11-1981
5000
10
MILLER CLERK
7782 23-01-1982
1300
10
SCOTT
ANALYST
7566 09-12-1982
3000
20
SMITH
CLERK
7902 17-12-1980
800
20
JOB
--------CLERK
CLERK
(lu vn ch Hoa-thng)
JOB
SAL
--------- ---------CLERK
800
SALESMAN
1600
SALESMAN
1250
MANAGER
2975
Trang 19
SALESMAN
MANAGER
MANAGER
ANALYST
SALESMAN
CLERK
CLERK
ANALYST
CLERK
1250
2850
2450
3000
1500
1100
950
3000
1300
13 rows selected.
7. Hin th tn nhn vin, m phng ban, ngy gia nhp cng ty sao cho gia nhp cng ty trong nm 1983.
ENAME
DEPTNO HIREDATE
---------- ---------- --------ADAMS
20 12-JAN-83
Where to_char(hiredate) like %83
Where hiredate like %83
8. Hin th tn nhn vin, lng mt nm (ANUAL_SAL ), thng sao cho lng ln hn thng v ngh
nghip l SALEMAN, sp theo th t lng gim dn v tn tng dn.
ANUAL_SAL
COMM
---------- ---------19200
300
18000
0
15000
500
4.1
Cc hm s
u vo v u ra l cc gi tr kiu s
ROUND(n[,m])
TRUNC(n[,m])
= Format(dl, 99999,00)
CEIL(n)
FLOOR(n)
POWER(m,n)
cho ly tha bc n ca m
EXP(n)
cho gi tr ca en
SQRT(n)
cho cn bc 2 ca n, n>=0
SIGN(n)
cho du ca n.
n<0 c SIGN(n)= -1
n=0 c SIGN(n)= 0
n>0 c SIGN(n)= 1
ABS(n)
cho gi tr tuyt i
MOD(m,n)
cho logarit c s m ca n
=
Trang 20
COS(n)
TAN(n)
V d hm ROUND(n[,m])
SELECT ROUND(4.923,1),
ROUND(4.923),
ROUND(4.923,-1),
ROUND(4.923,2)
FROM DUMMY;
ROUND(4.923,1) ROUND(4.923) ROUND(4.923,-1) ROUND(4.923,2)
-------------- ------------ --------------- -------------4.9
5
0
4.92
V d hm TRUNC(n[,m])
SELECT TRUNC
TRUNC
TRUNC
TRUNC
FROM DUMMY;
(4.923,1),
(4.923),
(4.923,-1),
(4.923,2)
Trang 21
SQRT(SAL)
---------70.7106781
49.4974747
36.0555128
SQRT(40) SQRT(COMM)
---------- ---------6.32455532
6.32455532
6.32455532
V d hm SIGN(n)
SELECT SAL-NVL(COMM,0), SIGN(SAL-NVL(COMM,0)),
NVL(COMM,0)-SAL, SIGN(NVL(COMM,0)-SAL)
FROM EMP
WHERE DEPTNO =30
SAL-NVL(COMM,0)SIGN(SAL-NVL(COMM,0))NVL(COMM,0)-SAL SIGN(NVL(COMM,0)-SAL)
--------------- ----------- --------------- --------------------2850
1
-2850
-1
-150
-1
150
1
1300
1
-1300
-1
1500
1
-1500
-1
950
1
-950
-1
750
1
-750
-1
4.2
Cc hm k t
CONCAT(char1, char2)
INITCAP(char)
LOWER(char)
LPAD(char1, n [,char2])
LTRIM(char1, n [,char2])
b cc k t trng bn tri
NLS_INITCAP(char)
RTRIM(char1, n [,char2])
b cc k t trng bn phi
SOUNDEX(char)
SUBSTR(char, m [,n])
cho chui trong mi k t trong chui from thay bng k t tng ng trong
chui to, nhng k t trong chui from khng c tng ng trong chui to s b
loi b.
UPPER(char)
Trang 22
INSTR(char1, char2 [,n[,m]]) tm v tr chui char2 trong chui char1 bt u t v tr n, ln xut hin th m.
LENGTH(char)
V d hm LOWER(char)
SELECT LOWER(DNAME), LOWER(SQL COURSE) FROM DEPT;
LOWER(DNAME)
-------------accounting
research
sales
operations
LOWER('SQL
---------sql course
sql course
sql course
sql course
V d hm UPPER(char)
SELECT ENAME FROM EMP WHERE ENAME = UPPER(Smith);
ENAME
---------SMITH
V d hm INITCAP(char)
SELECT INITCAP(DNAME), INITCAP(LOC) FROM DEPT;
INITCAP(DNAME)
-------------Accounting
Research
Sales
Operations
INITCAP(LOC)
------------New York
Dallas
Chicago
Boston
V d hm CONCAT(char1, char2)
SELECT CONCAT(ENAME, JOB) JOB FROM EMP WHERE EMPNO = 7900;
JOB
------------------JAMES
CLERK
V d hm LPAD(char1, n [,char2])
SELECT LPAD(DNAME,20,*), LPAD(DNAME,20), LPAD(DEptno,20, )
FROM DEPT;
LPAD(DNAME,20,'*')
LPAD(DNAME,20)
LPAD(DEPTNO,20,'')
-------------------- -------------------- -------------------******ACCOUNTING
ACCOUNTING
10
******RESEARCH
RESEARCH
20
******SALES
SALES
30
******OPERATIONS
OPERATIONS
40
V d hm RPAD(char1, n [,char2])
SELECT RPAD(DNAME,20,*), RPAD(DNAME,20), RPAD(DEptno,20, )
FROM DEPT;
Trang 23
RPAD(DNAME,20)
-------------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
RPAD(DEPTNO,20,'')
-------------------10
20
30
40
V d hm SUBSTR(char, m [,n])
SELECT SUBSTR(ORACLE,2,4), SUBSTR(DNAME,2), SUBSTR(DNAME,3,5)
FROM DEPT;
SUBS
---RACL
RACL
RACL
RACL
SUBSTR(DNAME,
------------CCOUNTING
ESEARCH
ALES
PERATIONS
SUBST
----COUNT
SEARC
LES
ERATI
LTRIM(DNAME,'A
-------------CCOUNTING
RESEARCH
SALES
OPERATIONS
LTRIM(DNAME,'A
-------------CCOUNTING
RESEARCH
LES
OPERATIONS
LTRIM(DNAME,'A
-------------CCOUNTING
RESEARCH
LES
ERATIONS
V d hm RTRIM(char1, n [,char2])
SELECT DNAME, RTRIM(DNAME,A), RTRIM(DNAME,AS),
RTRIM(DNAME,ASOP)
FROM DEPT;
DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
RTRIM(DNAME,'A
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
RTRIM(DNAME,'A
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
RTRIM(DNAME,'A
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
V d hm SOUNDEX(char)
SELECT ENAME, SOUNDEX(ENAME)
FROM EMP
WHERE SOUNDEX(ENAME)= SOUNDEX(FRED);
ENAME
SOUN
---------- ---FORD
F630
V d hm LENGTH(char)
SELECT LENGTH(SQL COURSE), LENGTH(DEPTNO), LENGTH(DNAME) FROM DEPT;
o to c bn: SQL v PL/SQL
Trang 24
Trang 25
TRANSLATE(
---------KING
FLARK
MILLER
JOB
--------PRESIDENT
MANAGER
CLERK
TRANSLATE
--------PTESIDENT
MINIGET
CLETK
V d hm REPLACE(char,search_string[,replacement_string])
SELECT JOB, REPLACE(JOB, SALESMAN, SALESPERSON), ENAME, REPLACE(ENAME,
CO,PR)
FROM EMP
WHERE DEPTNO =30 OR DEPTNO =20;
JOB
--------MANAGER
MANAGER
SALESMAN
SALESMAN
SALESMAN
CLERK
SALESMAN
ANALYST
CLERK
ANALYST
CLERK
REPLACE(JOB,'SALESMAN',
----------------------MANAGER
MANAGER
SALESPERSON
SALESPERSON
SALESPERSON
CLERK
SALESPERSON
ANALYST
CLERK
ANALYST
CLERK
ENAME
--------BLAKE
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ADAMS
REPLACE(ENAME,'CO','
--------------BLAKE
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SPRTT
ADAMS
V d cc hm lng nhau:
SELECT DNAME, LENGHT(DNAME), LENGHT(TRANSLATE,DNAME, AS,A))
FROM DEPT;
DNAME
LENGTH(DNAME) LENGTH(TRANSLATE(DNAME,'AS','A'))
-------------- ------------- --------------------------------ACCOUNTING
14
14
RESEARCH
14
13
SALES
14
12
OPERATIONS
14
13
4.3
Cc hm ngy
NEXT_DAY(d, char )
LAST_DAY(d)
V d hm MONTH_BETWEEN(d1, d2)
SELECT MONTHS_BETWEEN( SYSDATE, HIREDATE),
MONTHS_BETWEEN('01-01-2000','05-10-2000')
o to c bn: SQL v PL/SQL
Trang 26
ADD_MONTHS
---------02-07-1981
03-03-1982
17-03-1981
09-03-1983
12-04-1983
ADD_MONTHS
---------02-01-1981
03-09-1981
17-09-1980
09-09-1982
12-10-1982
V d hm NEXT_DAY(d, char )
SELECT HIREDATE, NEXT_DAY(HIREDATE,FRIDAY), NEXT_DAY(HIREDATE,6)
FROM EMP
WHERE DEPTNO = 10;
HIREDATE
---------17-11-1981
09-06-1981
23-01-1982
NEXT_DAY(H
---------20-11-1981
12-06-1981
29-01-1982
NEXT_DAY(H
---------20-11-1981
12-06-1981
29-01-1982
V d hm LAST_DAY(d)
SELECT SYSDATE, LAST_DAY(SYSDATE), HIREDATE, LAST_DAY(HIREDATE),
LAST_DAY(15-01-2001)
FROM EMP
WHERE DEPTNO =20;
SYSDATE
---------28-03-2001
28-03-2001
28-03-2001
28-03-2001
28-03-2001
LAST_DAY(S
---------31-03-2001
31-03-2001
31-03-2001
31-03-2001
31-03-2001
HIREDATE
---------02-04-1981
03-12-1981
17-12-1980
09-12-1982
12-01-1983
LAST_DAY(H
---------30-04-1981
31-12-1981
31-12-1980
31-12-1982
31-01-1983
LAST_DAY('
---------31-01-2001
31-01-2001
31-01-2001
31-01-2001
31-01-2001
ROUND(date1,MONTH)
ROUND(date1,YEAR)
Trang 27
4.4
Cc hm chuyn i kiu
TO_CHAR(number|date, fmt)
TO_NUMBER(char)
TO_DATE(chsr,fmt)
Vd:
SELECT To_char (sysdate, day, ddth month yyyy) from dummy;
SELECT EMPNO, ENAME, HIREDATE
FROM EMP
WHERE HIREDATE = TO_DATE (June 4, 1984, month dd, yyyy);
INSERT INTO EMP (EMPNO, DEPTNO, HIREDATE
VALUES (777, 20, TO_DATE(19-08-2000, DD-MM-YYYY);
SELECT ENAME, JOB,
DECODE (JOB, CLERK,WWORKER,MANAGER,BOSS,UNDEFINED) DECODD_JOB
FROM EMP;
SELECT GREATEST(1000,2000), GREATEST(SAL,COMM) FROM EMP
WHERE DEPTNO = 10;
Mt s khun dng ngy
SCC hoc CC
YYYY hoc SYYYY
YYY, YY, Y
IYYY, IYY, IY, I
SYEAR, YEAR
Q
MM
MONTH
MON
WW, W
DDD, DD, D
DAY
DY
J
AM, PM
HH, HH12 HH24
MI
SS
SSSSS
/ . , char
TH
SP
o to c bn: SQL v PL/SQL
th k; S ch ngy BC
nm; S ch ngy BC
Ch nm vi 3,2,1 k t s
Ch nm theo chun ISO
Ch nm theo cch pht m ca ngi anh;
Qu trong nm
Gi tr thng vi 2 s (01-12)
Tn y ca thng theo ting anh, di 9
Thng vi 3 k t vin tt (JAN, FEB...)
Tun trong nm hoc trong thng
Ngy trong nm, thng hoc tun
Ch th trong tun
Ch th trong tun vi 3 k t vit tt
Ngy Julian; bt u t ngy 31/12/4713 trc cng
nguyn
Ch nh sng, chiu
Ch gi trong ngy (1-12) hoc (0-23)
Pht (0-59)
Giy (0-59)
S giy n na m (0-86399)
c t ng thm khi t trong khun dng
on k t t trong nhy p c t ng thm khi t
trong khun dng
Thm phn th t (1st, 2nd, 4th )
Pht m s ( FOUR vi DDSP)
Trang 28
RR
Nm hin
ti
0-49
50-99
th k hin
ti
Th k trc
Th k
sau
Th k
hin ti
Mt s khun dng s
K
t
9
0
$
L
.
,
MI
PR
EEE
V
B
4.5
M t
V d
Kt qu
Xc nh hin th 1 s
Hin th c s 0 u nu
di khun dng ln hn s
hin c
Thm k t tin t
Thm k t tin t bn a
Du thp phn
Du phn cch phn nghn
Du m bn phi ( vi cc
gi tr m)
Thm ngoc nhn vo cc gi
tr m
Chuyn sang hin th s E
Nhn vi 10 n, n l s cc s
9 t sau V
Hin th c gi tr 0 nu =
0.
999999
099999
1234
001234
$999999
L999999
999999.99
999,999
999999MI
$1234
FF1234
1234.00
1,234
1234-
999999PR
<1234>
99.9999RRRR
9999V99
1.234E+03
123400
B9999.99
1234.00
Bi tp
1. Lit k tn nhn vin, m phng ban v lng nhn vin c tng 15% (PCTSAL).
DEPTNO
---------10
30
10
20
30
30
30
30
30
20
20
20
20
10
ENAME
PCTSAL
---------- ---------KING
5000
BLAKE
2850
CLARK
2450
JONES
2975
MARTIN
1250
ALLEN
1600
TURNER
1500
JAMES
950
WARD
1250
FORD
3000
SMITH
800
SCOTT
3000
ADAMS
1100
MILLER
1300
Trang 29
DATE_HIRED
-------------------------april,SECOND 1981
december,THIRD 1981
december,SEVENTEENTH 1980
december,NINTH 1982
january,TWELFTH 1983
7. Hin th tn nhn vin, ngy gia nhp cng ty, ngy xt nng lng (sau ngy gia nhp cng ty 1 nm),
sp xp theo th t ngy xt nng lng.
ENAME
---------SMITH
ALLEN
WARD
JONES
BLAKE
CLARK
TURNER
MARTIN
KING
JAMES
FORD
MILLER
SCOTT
ADAMS
HIREDATE
---------17-12-1980
20-02-1981
22-02-1981
02-04-1981
01-05-1981
09-06-1981
08-09-1981
28-09-1981
17-11-1981
03-12-1981
03-12-1981
23-01-1982
09-12-1982
12-01-1983
REVIEW
---------17-12-1981
20-02-1982
22-02-1982
02-04-1982
01-05-1982
09-06-1982
08-09-1982
28-09-1982
17-11-1982
03-12-1982
03-12-1982
23-01-1983
09-12-1983
12-01-1984
Trang 30
SALARY
-----------BELOW 1500
1600
2850
2450
3000
BELOW 1500
2975
5000
BELOW 1500
BELOW 1500
3000
BELOW 1500
On Target
BELOW 1500
Bin runtime
Trang 31
5.1
Bi tp
1. Hin th tn nhn vin, ngy gia nhp cng ty vi iu kin ngy gia nhp cng ty nm trong khong hai
bin runtime c nhp vo t bn phm (&first_date, &last_date).
2. Hin th tn nhn vin, ngh nghip, lng, m gim c, m phng ban vi iu kin ngh nghip bng
mt bin c nhp vo t bn phm. (&job)
3. nh ngha mt bin tnh thu nhp mt nm ca nhn vin. Dng bin ny tm nhng nhn vin c thu
nhp ln hn hoc bng $30000.
4. nh ngha mt bin l khong thi gian nhn vin lm trong cng ty. Hin th tn nhn vin v qung thi
gian nhn vin lm vic vi iu kin nhn vin l mt bin c nhp vo t bn phm.
ENAME
LENGTH OF SERVICE
---------- --------------------KING
19 YEAR 4 MONTHS
6.1
Cc hm tc ng trn nhm
Gi tr ln nht ca expr
MIN([DISTINCT/ALL] expr)
Gi tr nh nht ca expr
STDDVE([DISTINCT/ALL] n)
Trang 32
Tc ng trn mt nhm d liu cng tnh cht ca cu lnh truy vn. Cng tnh cht c ch bi mnh
[GROUP BY expr]
[HAVING condition]
Trang 33
6.2
Mnh GROUP BY
C php:
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
[WHERE condition]
[GROUP BY expr]
[HAVING
[HAVING condition]
[ORDER BY expr/position [DESC/ASC]]
Mnh GROUP BY s nhm cc dng d liu c cng gi tr ca expr. V d GROUP BY JOB ngha l s
nhm cc ngh ging nhau.
Mnh HAVING l t iu kin ca nhm d liu. Mnh ny khc mnh WHERE ch mnh
WHERE t iu kin cho ton b cu lnh SELECT. V d:
SELECT JOB, MAX(SAL)
FROM EMP
WHERE JOB !=MANAGER
GROUP BY JOB;
JOB
MAX(SAL)
--------- ---------ANALYST
3000
CLERK
1300
PRESIDENT
5000
SALESMAN
1600
SELECT JOB, MAX(SAL)
FROM EMP
GROUP BY JOB
HAVING COUNT(*)>3;
JOB
MAX(SAL)
--------- ---------CLERK
1300
SALESMAN
1600
SELECT JOB, MAX(SAL)
FROM EMP
o to c bn: SQL v PL/SQL
Trang 34
6.3
Bi tp
7.1
Mi lin kt tng ng
Cc column trng tn phi c ch r column nm bng no thng qua tn hoc qua alias. Tn
trng ny c th t trong cc mnh khc nh SELECT, ORDER BY..
Vd:
SELECT DEPT.DEPTNO, ENAME,JOB, DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
ORDER BY DEPT.DEPTNO;
SELECT A.DEPTNO, A.ENAME, A.JOB, B.DNAME
FROM EMP A, DEPT B
WHERE A.DEPTNO = B.DEPTNO
ORDER BY A.DEPTNO;
7.2
Cc column trng tn phi c ch r column nm bng no thng qua tn hoc qua alias. Tn
trng ny c th t trong cc mnh khc nh SELECT, ORDER BY..
VD:
SELECT E.ENAME,E.JOB, S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL;
Trang 35
7.3
Mi lin kt cng
Mi lin kt cng tr v c cc gi tr NULL trong biu thc iu kin. Du (+) v no tnh thm cc
gi tr NULL v .
7.4
7.5
Cc ton t tp hp
UNION
UNION ALL
INTERSET
MINUS
Vd:
Select job from emp where deptno = 10
Union
Select job from emp where deptno = 30;
o to c bn: SQL v PL/SQL
Trang 36
JOB
--------CLERK
MANAGER
PRESIDENT
SALESMAN
7.6
Bi tp
1. Hin th ton b tn nhn vin v tn phng ban lm vic sp xp theo tn phng ban.
2. Hin th tn nhn vin, v tr a l, tn phng vi iu kin lng >1500.
ENAME
---------KING
BLAKE
CLARK
JONES
ALLEN
FORD
SCOTT
LOC
------------NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
DALLAS
DALLAS
DNAME
----------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
SALES
RESEARCH
RESEARCH
JOB
SAL
GRADE
--------- ---------- ---------CLERK
950
1
CLERK
800
1
CLERK
1100
1
SALESMAN
1250
2
SALESMAN
1250
2
CLERK
1300
2
SALESMAN
1600
3
SALESMAN
1500
3
MANAGER
2850
4
MANAGER
2450
4
MANAGER
2975
4
ANALYST
3000
4
ANALYST
3000
4
PRESIDENT
5000
5
JOB
SAL
GRADE
--------- ---------- ---------SALESMAN
1600
3
SALESMAN
1500
3
LOC
SAL
------------- ---------DALLAS
2975
DALLAS
3000
DALLAS
800
DALLAS
3000
DALLAS
1100
6. Hin th tn nhn vin , ngh nghip, lng, mc lng, tn phng lm vic tr nhn vin c ngh l cleck
v sp xp theo chiu gim.
ENAME
---------MARTIN
WARD
ALLEN
TURNER
JOB
SAL
GRADE DNAME
--------- ---------- ---------- -------------SALESMAN
1250
2 SALES
SALESMAN
1250
2 SALES
SALESMAN
1600
3 SALES
SALESMAN
1500
3 SALES
Trang 37
MANAGER
MANAGER
MANAGER
ANALYST
ANALYST
PRESIDENT
2850
2450
2975
3000
3000
5000
4
4
4
4
4
5
SALES
ACCOUNTING
RESEARCH
RESEARCH
RESEARCH
ACCOUNTING
7. Hin th chi tit v nhng nhn vin kim c 36000 $ 1 nm hoc ngh l cleck. (gm cc trng tn,
ngh, thu nhp, m phng, tn phng, mc lng)
ENAME
---------JAMES
SMITH
ADAMS
MILLER
FORD
SCOTT
JOB
ANUAL_SAL DNAME
GRADE
--------- ---------- -------------- ---------CLERK
11400 SALES
1
CLERK
9600 RESEARCH
1
CLERK
13200 RESEARCH
1
CLERK
15600 ACCOUNTING
2
ANALYST
36000 RESEARCH
4
ANALYST
36000 RESEARCH
4
EMP_NAME
EMP_SAL MGR_NAME
MGR_SAL
Trang 38
8.1
JOB
-------MANAGER
MANAGER
MANAGER
Khng thuc
ANY v SOME :
ALL :
EXISTS :
Tr v TRUE nu c tn ti.
V d
o to c bn: SQL v PL/SQL
Trang 39
EXISTS (
SELECT EMPNO
FROM EMP
WHERE EMP.MGR = E.EMPNO);
/Tm nhng ngi c nhn vin/
8.2
9
Bi tp
Cu trc hnh cy
9.1
Trong mt table ca CSDL ORACLE c th hin cu trc hnh cy. V d trong bng EMP cu trc th hin
cp qun l.
KING
EMPNO = 7839
Mgr =7839
CLARK
JONES
BLAKE
ADAMS
JAMES
SMITH
Trang 40
Root node
Child node
Parent node
Leaf node
Level
Level l mt ct gi cha cp trong cu trc hnh cy. V d.
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR is NULL;
LEVEL
DEPTNO
EMPNO ENAME
---------- ---------- ---------- ---------1
10
7839 KING
2
30
7698 BLAKE
3
30
7654 MARTIN
3
30
7499 ALLEN
3
30
7844 TURNER
3
30
7900 JAMES
3
30
7521 WARD
2
10
7782 CLARK
3
10
7934 MILLER
2
20
7566 JONES
3
20
7902 FORD
4
20
7369 SMITH
3
20
7788 SCOTT
4
20
7876 ADAMS
9.2
JOB
SAL
--------- ---------PRESIDENT
5000
MANAGER
2850
SALESMAN
1250
SALESMAN
1600
SALESMAN
1500
CLERK
950
SALESMAN
1250
MANAGER
2450
CLERK
1300
MANAGER
2975
ANALYST
3000
CLERK
800
SALEMAN
3300
CLERK
1100
C th nh ngha quan h tha k trong cu hi bng mnh STAR WITH v CONNECT BY trong cu
lnh SELECT, mi mu tin l mt node trong cy phn cp. Ct gi LEVEL cho bit cp ca mu tin hay cp
ca node trong quan h tha k.
C php:
SELECT [DISTINCT/ALL] [expr [c_ias]]
FROM [table/view/snapshot] [t_alias]
[WHERE condition]
[START WITH condition CONNECT BY PRIOR condition]
[GROUP BY expr] [HAVING condition]
[UNION/UNION ALL/INTERSET/MINUS select command]
[ORDER BY expr/position [DESC/ASC]]
Trong :
START WITH
PRIOR
nh hng cu trc. Nu prior xut hin trc mgr, Mgr s c tm trc sau n
empno, y l hnh cy hng ln. Nu prior xut hin trc empno, empno s c tm trc sau
n empno, y l hnh cy hng xung.
V d
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR MGR = EMPNO
START WITH empno = 7876;
Trang 41
JOB
SAL
--------- ---------CLERK
1100
SALEMAN
3300
MANAGER
2975
PRESIDENT
5000
JOB
SAL
--------- ---------PRESIDENT
5000
MANAGER
2850
SALESMAN
1250
SALESMAN
1600
SALESMAN
1500
CLERK
950
SALESMAN
1250
MANAGER
2450
CLERK
1300
MANAGER
2975
ANALYST
3000
CLERK
800
CLERK
1100
2.
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR EMPNO = MGR AND ENAME != SCOTT
START WITH MGR IS NULL;
LEVEL
DEPTNO
EMPNO ENAME
---------- ---------- ---------- ---------1
10
7839 KING
2
30
7698 BLAKE
3
30
7654 MARTIN
3
30
7499 ALLEN
3
30
7844 TURNER
3
30
7900 JAMES
3
30
7521 WARD
2
10
7782 CLARK
3
10
7934 MILLER
2
20
7566 JONES
3
20
7902 FORD
4
20
7369 SMITH
9.3
JOB
SAL
--------- ---------PRESIDENT
5000
MANAGER
2850
SALESMAN
1250
SALESMAN
1600
SALESMAN
1500
CLERK
950
SALESMAN
1250
MANAGER
2450
CLERK
1300
MANAGER
2975
ANALYST
3000
CLERK
800
Bi tp
1. Tm tt c cc nhn vin, ngy gia nhp cng ty, tn nhn vin, tn ngi gim c v ngy gia nhp
cng ty ca ngi gim c y.
EMP_NAME
EMP_SAL MGR_NAME
MGR_SAL
---------- ---------- ---------- ---------BLAKE
2850 BLAKE
2850
MARTIN
1250 BLAKE
2850
ALLEN
1600 BLAKE
2850
TURNER
1500 BLAKE
2850
JAMES
950 BLAKE
2850
o to c bn: SQL v PL/SQL
Trang 42
1250
2450
1300
2975
3000
800
3300
1100
BLAKE
CLARK
CLARK
JONES
JONES
JONES
JONES
JONES
2850
2450
2450
2975
2975
2975
2975
2975
13 rows selected.
2. Tm nhng nhn vin kim c lng cao nht trong mi loi ngh nghip.
JOB
MAX(SAL)
--------- --------ANALYST
3000
CLERK
1300
MANAGER
2975
PRESIDENT
5000
SALESMAN
1600
3. Tm mc lng cao nht trong mi phng ban, sp xp theo th t phng ban.
ENAME
---------KING
SCOTT
BLAKE
JOB
DEPTNO
SAL
--------- ---------- ---------PRESIDENT
10
5000
SALEMAN
20
3300
MANAGER
30
2850
HIREDATE
DEPTNO
---------- ---------09-06-1981
10
17-12-1980
20
20-02-1981
30
ENAME
SAL
DEPTNO
---------- ---------- ---------KING
5000
10
JONES
2975
20
FORD
3000
20
SCOTT
3300
20
BLAKE
2850
30
ALLEN
1600
30
6. Hin th tn nhn vin, m nhn vin, m gim c, tn gim c, phng ban lm vic ca gim c, mc
lng ca gim c.
EMP_NUMBER
---------7698
7654
7499
7844
7900
7521
7782
7934
7566
7902
7369
7788
7876
13 rows selected.
Trang 43
11 To table
: Tn table cn to
: Tn column trong table
: Kiu d liu ca column
: Gi tr mc nh ca column trong trng hp
NULL l expr
: Rng buc ca bn thn column
: rng buc ca ton bng
: % trng
: % s dng
: S bn ghi khi to
: S bn ghi ln nht
Trang 44
CONSTRAINT
V du 2
CREATE TABLE SALGRADE1
(GRADE NUMBER CONSTRAINT PK_SALGRADE PRIMARY KEY,
LOSAL NUMBER,
HISAL NUMBER)
TABLESPACE USER
STORAGE (INITIAL 6144 NEXT 6144
MINEXTENTS 1 MAXEXTENTS 5 PCTINCREASE 5)
V d 3
CREATE TABLE DEPT10
AS
SELECT EMPNO, ENAME, JOB, SAL
FROM EMP WHERE DEPTNO =10;
V d 4
CREATE TABLE EMP_SAL (NAME, SALARY,GRADE)
AS
SELECT ENAME, SAL, GRADE
FROM EMP, SALGARDE
WHERE EMP.SAL BETWEEN LOSAL AND HISAL ;
to mt table mi, chng ta cn phi chun b mt s thng tin sau:
Nhng column m cho php null nn nh ngha sau tit kim ni lu tr.
Gp cc table li nu c th.
Trang 45
Tn phi duy nht trong "khng gian tn" nht nh. Cc object thuc cng khng gian tn phi c tn
khc nhau.
Cc b danh ca ct, b danh bng, tn ngi s dng, mt khu mc d khng phi l cc object hoc cc
thnh phn con ca object nhng cng phi c t tn theo cc quy tc trn, ngoi tr
B danh ct, b danh bng ch tn ti khi thc hin cc lnh SQL v khng c lu tr trong CSDL, do vy
khng p dng quy tc 9 v khng gian tn.
Mt khu khng thuc v khng gian tn no v do cng khng p dng quy tc 9.
Nn t tn theo mt quy tc t tn thng nht
o to c bn: SQL v PL/SQL
Trang 46
Tn object
schema
part
dblink
Trang 47
Kiu
Lu tr
7456123.89
NUMBER
7456123.89
7456123.89
NUMBER(9)
7456123
7456123.89
NUMBER(9,2)
7456123.89
7456123.89
NUMBER(9,1)
7456123.8
7456123.89
NUMBER(6)
Khng hp l
7456123.8
NUMBER(15,1)
7456123.8
7456123.89
NUMBER(7,-2)
7456100
7456123.89
NUMBER(-7,2)
Khng hp l
11.4.5 FLOAT
Dng khai bo kiu s du chm ng, vi chnh xc thp phn 38 hay chnh xc nh phn l 126.
FLOAT(b) Khai bo kiu du chm ng vi chnh xc nh phn l b, b t 1 n 126. C th chuyn t
chnh xc nh phn sang chnh xc thp phn bng cch nhn chnh xc nh phn vi 0.30103
Trang 48
D liu kiu LONG khng th tham gia vo cc rng buc ton vn, ngoi tr kim tra NULL v khc
NULL
Trong cu lnh SQL c truy cp cc ct kiu LONG, th vic cp nht hoc kha cc bng ch cho php
trong cng mt CSDL
Ngoi ra, cc ct kiu LONG khng c tham gia trong cc thnh phn sau ca cu lnh SQL
Cc mnh WHERE, GROUP BY, ORDER BY, CONNECT BY hoc vi tc t DISTINCT trong cu
lnh SELECT
11.4.7 DATE
Dng cha d liu ngy v thi gian. Mc d kiu ngy v thi gian c th c cha trong kiu CHAR v
NUMBER.
Vi gi tr kiu DATE, nhng thng tin c lu tr gm th k, nm, thng, ngy, gi, pht, giy. ORACLE
khng cho php gn gi tr kiu ngy trc tip, gn gi tr kiu ngy, bn phi dng TO_DATE chuyn
gi tr kiu chui k t hoc kiu s.
Nu gn mt gi tr kiu ngy m khng ch thi gian th thi gian mc nh l 12 gi m, Nu gn gi tr
kiu ngy m khng ch ra ngy, th ngy mc nh l ngy u ca thng. Hm SYSDATE cho bit ngy v
thi gian h thng.
Tnh ton i vi kiu ngy
i vi d liu kiu ngy, bn c th thc hin cc php ton cng v tr.
V d
SYSDATE+1 ngy hm sau
SYSDATE-7 cch y mt tun
SYSDATE+(10/1440) mi pht sau
Ngy Julian: L gi tr s cho bit s ngy k t ngy 1 thng ging nm 4712 trc cng nguyn.
V d
o to c bn: SQL v PL/SQL
Trang 49
V d
0000000F.0000.0002
Row u tin trong block 15 ca data file th hai.
11.4.10 MLSLABEL
Kiu MLSLABEL dng cha label dng nh phn m ORACLE dng m bo hot ng ca bn thn
h thng.
11.4.11 Chuyn i kiu
Ni chung mt biu thc khng th gm cc gi tr thuc nhiu kiu khc nhau, tuy nhin ORACLE cho php
chuyn i gi cc kiu d liu. ORACLE t ng chuyn kiu ca d liu trong mt s trng hp sau
Khi INSERT hoc UPDATE gn gi tr cho ct c kiu khc, ORACLE s t ng chuyn gi tr sang
kiu ca ct.
Khi s dng cc hm hoc cc ton t m cc tham s c kiu khng tng thch th ORACLE s t
ng chuyn kiu.
Khi s dng ton t so snh m cc gi tr c cc kiu khc nhau, ORACLE s t ng chuyn kiu.
V d 1
SELECT ename FROM emp WHERE hiredate = '12-MAR-1993'
ORACLE t ng chuyn chui '12-MAR-1993' sang kiu DATE trong php so snh
V d 2
SELECT ename FROM emp WHERE ROWID = '00002514.0001.0001'
o to c bn: SQL v PL/SQL
Trang 50
TO_NUMBER
TO_CHAR
TO_DATE
11.5 Constraint
Cc dng constraint gm:
-
NULL/NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY ( Referential )
CHECK
NULL/NOT NULL: rng buc column trng hoc khng trng, trong v d mnh rng buc:
CREATE TABLE DEPT (
DEPTNO
NUMBER(2) NOT NULL,
DNAME
CHAR(14),
LOC
CHAR(13),
CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY (DEPTNO));
UNIQUE: Ch ra rng buc duy nht, cc gi tr ca column ch trong mnh UNIQUE trong cc row ca
table phi c gi tr khc bit. Gi tr null l cho php nu UNIQUE da trn mt ct. Vd:
CREATE TABLE DEPT (
DEPTNO
NUMBER(2),
DNAME
CHAR(14),
LOC
CHAR(13),
CONSTRAINT UNQ_DEPT_LOC UNIQUE(DNAME, LOC));
PRIMARY KEY: Ch ra rng buc duy nht (ging UNIQUE), tuy nhin kho l dng kho UNIQUE cp cao
nht. Mt table ch c th c mt PRIMARY KEY. Cc gi tr trong PRIMARY KEY phi NOTT NULL.
C php khi t CONSTRAINT mc TABLE
[CONSTRAINT constraint_name] PRIMARY KEY (column, Column..)
C php khi t CONSTRAINT mc COLUMN
[CONSTRAINT constraint_name] PRIMARY KEY
FOREIGN KEY ( Referential ): Ch ra mi lin h rng buc tham chiu gia table ny vi table khc, hoc
trong chnh 1 table. N ch ra mi lin h cha-con v ch rng buc gia FOREIGN KEY bng ny vi
PRIMARY KEY hoc UNIQUE Key ca bng khc. V d quan h gia DEPT v EMP thng qua trng
DEPTNO.
T kho ON DELETE CASCADE c h nh trong dng kho ny ch khi d liu cha b xo (trong bng
DEPT) th d liu con cng t ng b xo theo (trong bng EMP).
CHECK: Rng buc kim tra gi tr
V d:
CREATE TABLE EMP
(EMPNO NUMBER NOT NULL CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10) CONSTRAINT NN_ENAME NOT NULL
UPPER_ENAME CHECK (ENAME = UPPER(ENAME)),
o to c bn: SQL v PL/SQL
CONSTRAINT
Trang 51
11.6 Bi tp
1. To bng PROJECT vi cc column c ch ra di y, PROJID l promary key, v P_END_DATE >
P_START_DATE.
Column name
Data Type
Size.
-----------------------------------PROJID
NUMBER
4
P_DESC
VARCHAR2
20
P_START_DATE
DATE
P_END_DATE
DATE
BUDGET_AMOUNT NUMBER
7,2
MAX_NO_STAFF
NUMBER
2
2.. To bng ASSIGNMENTS vi cc column c ch ra di y, ng thi ct PROJID l foreign key ti
bng PROJECT, ct EMPNO l foreign key ti bng EMP.
Column name
Data Type
Size.
-----------------------------------------------PROJID
NUMBER
4
NOT NULL
EMPNO
NUMBER
4
NOT NULL
A_START_DATE
DATE
A_END_DATE
DATE
BILL_AMOUNT
NUMBER
4,2
ASSIGN_TYPE
VARCHAR2
2
Kh dng mnh MODIFY khng th chuyn tnh cht ca COLUMN c ni dung l NULL chuyn
thnh NOT NULL;
Khng th a thm mt ct NOT NUL nu table c s liu. Phi thm ct NULL, in y s liu,
sau chuyn thnh NOT NULL.
Khng th dng mnh MODIFY nh ngha cc CONSTRAINT tr rng buc NULL/NOT NULL.
Mun sa CONSTRAINT cn xo chng sau ADD thm vo.
Trang 52
Xa tt c d liu
Trang 53
Mun hin th ton b thng tin v cc table, view, snapshot trong t in d liu dng lnh
SELECT * FROM DICTIONARY;
Hin th cu ca USER_OBJECT
DESCRIBE USER_OBJECT;
Hin th tt c cc bng m user s hu:
SELECT OBJECT_NAME
FROM USER_OBJECT
WHERE OBJECT_TYPE = TABLE;
SELECT * FROM TAB;
SELECT TABLE_NAME FROM USER_TABLE;
Hin th tt c cc loi i tng trong t in d liu:
SELECT DISTINCT OBJECT_TYPE
FROM USER_OBJECTS;
12.4 Bi tp
1. Thm column COMMENTS kiu LONG vo bng PROJECTS. Thm column HOURS kiu NUMBER
vo bng ASSIGNMENTS.
2. S dng view USER_OBJECTS hin th tt c cc i tng user s hu.
3. Thm rng buc duy nht (UNIQUE) cho 2 column PROJECT_ID v EMPNO ca bng ASSIGNMENTS.
4. Xem cc thng tin v cc rng buc trong USER_CONSTRAINTS.
5. Xem trong USER hin ti c tt c bao nhiu bng.
Trang 54
13.3 Xa dng
xa dng dng lnh DELETE. C php nh sau:
o to c bn: SQL v PL/SQL
Trang 55
SAVEPOINT name
V d:
INSERT INTO DEPT
VALUES (50,TESTING,LAS VEGAS);
SAVEPOINT INSERT_DONE;
UPDATE DEPT
SET DNAME = MARKETING;
ROLLBACK TO INSERT_DONE ;
UPDATE DEPT SET DNAME = MARKETING
WHERE DNAME =SALES;
COMMIT;
Trang 56
13.6 Bi tp
1. Thm d liu vo bng PROJECTS.
PROJID
P_DESC
P_START_DATE
P_END_DATE
BUDGET_AMOUNT
MAX_NO_STAFF
1
WRITE C030 COURSE
02-JAN-88
07-JAN-88
500
1
2
PROOF READ NOTES
01-JAN-89
10-JAN-89
600
1
1
7369
01-JAN-88
03-JAN-88
50.00
WR
15
1
7902
04-JAN-88
07-JAN-88
55.00
WR
20
2
7844
01-JAN-89
10-JAN-89
45.50
PF
30
14 Sequence v index
14.1 Sequence
14.1.1 To Sequence
Sequence l danh sch tun t ca con s, v c to bi Oracle sever. Sequence dng to kha
chnh mt cch t ng cho d lu.
Sequence thng dng to kha chnh trong sinh m t ng. C th dng chung cho nhiu i tng.
Con s sequence ny c chiu di ti a l 38 s.
to sequence, dng lnh create nh sau
CREATE SEQUENCE sequence_name
INCREMENT BY integer
START WITH integer
[MAXVALUE integer]
[MINVALUE integer]
[CYCLE/NO CYCLE];
Trong :
INCREMENT BY : ch nh khong cch
START WITH
: Ch nh s u tin
MAXVALUE
: Gi tr ln nht ca
MINVALUE
: Gi tr nh nht ca
CYCLE/NO CYCLE: Dy tun t c quay
CYCLE
ca dy s tun t
ca dy s tun t
dy tun t
dy tun t
vng khi n im cui. Mc nh l NO
V d:
CREATE SEQUENCE sample_sequence INCREMENT 1 STRAT WITH 2 MAXVALUE 100;
NEXTVAL
Tng gi tri hin thi ca sequence v cho gi tr sau khi tng phi xc nh tn sequence
trc currval v nextval
Trang 57
Trong cu hi con
14.1.2 Xo v sa sequence
Sa bng lnh:
ALTER SEQUENCE sequence_name
INCREMENT BY integer
START WITH integer
[MAXVALUE integer]
[MINVALUE integer]
[CYCLE/NO CYCLE];
Xo bng lnh:
DROP SEQUENCE sequence_name ;
14.2 Index
Index l mt cu trc c s d liu, c sever s dng tm mt row trong bng mt cch nhanh chng.
Index bao gm mt key value ( mt ct (column) trong hng (row) ) v rowid.
C php:
CREATE [UNIQUE]] INDEX index_name
ON TABLE ( column [,column...]);
o to c bn: SQL v PL/SQL
Trang 58
Primaryv unique key ( kha chnh v kha duy nht) t ng c index, nhng nn c index cho foreign
key( kha ngoi).
S lng index cho mt table l khng gii hn. Tuy nhin nu c qu nhiu index s gy nh hng n s
liu khi m d liu trong table b thay i th t theo index. V d: Thm mt row vo bng tt c cc Index
s c update. Nn chn la gia yu cu query, v insert, update c mt index hp l. i vi cc
kho PRIMARY KEY v UNIQUE KEY t kho UNIQUE c t ng thm khi to INDEX.
V d:
CREATE INDEX i-ENAME ON EMP (ENAME);
Xo INDEX bng lnh:
DROP INDEX index_name ;
14.3 Bi tp
1. To Index trn ct PROJID cho bng ASSIGNMENT.
2. Hin th danh sch ca nhn vin thuc s qun l ca ngi c tn l 1 bin c nhp t bn phm
EMPNO
---------7698
7654
7499
7844
7900
7521
ENAME
------BLAKE
MARTIN
ALLEN
TURNER
JAMES
WARD
JOB
MGR
------------MANAGER 7839
SALESMAN 7698
SALESMAN 7698
SALESMAN 7698
CLERK
7698
SALESMAN 7698
HIREDATE
SAL
COMM
DEPTNO
---------- ----- ------ ---------01-05-1981 2850
30
28-09-1981 1250
1400
30
20-02-1981 1600
300
30
08-09-1981 1500
0
30
03-12-1981
950
30
22-02-1981 1250
500
30
15 To view
15.1 View
View l mt table logic, view khng phi l ni lu tr d liu mc vt l. Cc thnh phn ca view da
trn table hoc l trn view khc. Mi tc ng ln view u gy nh hng ti table ca view , v ngc
li. nh ngha mt view dng query trn mt bng hay mt view no .
C php
CREATE [OR REPLACE] [FORCE] VIEW view_name [(column, column,...)]
AS
SELECT statement
[WITH CHECK OPTION [CONSTRAINT constraint_name]];
Trong
OR REPLACE
FORCE
column, column,
WITH CHECK OPTION
CONSTRAINT
o to c bn: SQL v PL/SQL
V d 1
CREATE VIEW emp_view
AS
SELECT empno, ename, sal FROM emp WHERE deptno = 10;
V d 2
CREATE VIEW dept_summary
(name, minsal, maxsal, avsal)
AS
SELECT dname, min(sal), max(sal), avg(sal) FROM emp, dept
FROM emp, dept
WHERE emp.deptno = dept.deptno
GROUP BY dname;
V d 3
CREATE VIEW dept_view
AS
SELECT eame, sal*12 Annsal
FROM emp
WHERE deptno = 20
WITH CHECK OPTIION CONSTRAINT dept_check;
Xa cc view
Ch nhng ngi to view mi c quyn DROP
DROP VIEW dept_view;
View c th thc hin cc lnh SQL sau
Select
Insert
Update
Comment
Khng th insert, update trn view, khi query ca view cha cc ton t join, set, distinct, group by,
group.
Khng th no insert, update trn view, nu nh trong view c dng with check option.
Khng th no insert trn view, trn table c nhng ct not Null m khng dng default value ( bi v
trong trng hp ny view s c t colunm hn table table. Nn insert 1 row vo view, thc cht l insert
row vo table s khng hp l).
Trang 60
Nhng query ca view khng th no tham kho vo 2 column gi nextval, currval (nextval, currval dng
cho sequence).
15.2 Bi tp
1. To view c hin th nh sau:
select * from aggredates;
DEPTNO
AVERAGE MAXIMUN
MINIMUN
SUM
NO_SALS
NO_COMMS
------ ---------- ------- ---------- ---------- ---------- ---------10 2916.66667
5000
1300
8750
3
0
20
2235
3300
800
11175
5
0
30 1566.66667
2850
950
9400
6
4
2. To view nhp s liu vo bng ASIGNMENT vi cc iu kin sau:
PROJID <2000, P_START_DATE<P_END_DATE
Cc gi tr c th chp nhn ca assign_type l PS, WT hoc ED
EMPNO c gi tr NOT NULL
BILL_RATE < 50 Vi ASSIGN_TYPE L PS
BILL_RATE < 60 Vi ASSIGN_TYPE L WT
BILL_RATE < 70 Vi ASSIGN_TYPE L ED
2. nh ngha bng MESSAGES c cu trc
Column name
Data Type
--------------------------------------------------NUMCOL1
NUMBER(9,2)
NUMCOL2
NUMBER(9,2)
CHARCOL1
VARCHAR2(60)
CHARCOL2
VARCHAR2(60)
DATECOL1
DATE
DATECOL2
DATE
16 Quyn v bo mt
Bo mt CSDL
Bo mt h thng
Bo mt d liu
Trang 61
Quyn h thng
Trong cc quyn h thng quyn DBA l ln nht. DBA c quyn
...
Gn quyn
GRANT privilege[,privilege...] TO user [,user...]
Xo quyn
REVOKE privilege[,privilege...] FROM user [,user...]
16.2 ROLE
Role l tn ca mt nhm cc quyn hn. N c to qun l quyn hn cho cc ng dng hoc nhm
cc User. Vic dng role cho php qun l thng nht trn cc i tng, tng tnh mm do trong qun tr,
d dng thay i. V d hai i tng X, Y c quyn trn role A tc l role A c quyn g th X, Y c quyn
tng ng khi role A b thay i quyn hn th X, Y cng b thay i quyn hn theo.
Lnh to Role:
CREATE ROLE role [IDENTIFY BY password];
Gn privilege cho Role
Gn Role c cc i tng
Mt s Role hay dng:
CONNECT
RESOURCE
Lnh gn v xo Role ging nh lnh gn v xo Privilege. Chi tit xem trong phn qun tr ORACLE.
Trang 62
16.3 Synonym
Synonyms l b danh cho mi i tng ca Oracle. Cc i tng ca Oracle l table, view, snapshot,
sequence, procedure, function, package v cc synonym khc. C php
CREATE PUBLIC SYNONYM synonym_name
FROM [OWNER.]object_name;
Dng Synonyms c nhng li im sau:
Trang 63
PL/SQL Interpreter
Wizard
Ko th copy i tng
Tm kim i tng
Cch gi:
Nhn p vo icon bn tri ca program unit. Hoc
Nhn p vo nt (+) to Program unit mi
Tin ch
Compile: Dch
Trang 64
Khi chn mt program unit no . Ni dung ca program unit s hin ln ca s Interpreter debug.
Wizard
To mt program unit
Son tho
Tr gip son tho bng menu edit.
C th dng import v export trn menu file a thm/loi b on text
Chn Syntax palete trong menu program tr gip v c php
Compile tm li, thng bo li hin ln ti dng cui ca ca s
Database Trigger
Son tho:
Ging nh vi Program unit
Thm cc la chn thuc tnh ca trigger.
Tm vt sa li cc Program Unit
To cc breakpoint (nhn p vo s dng lnh) dng on chng trnh, kim tra cc bin runtime,
d liu...
Trang 65
Stored Program Unit: Ct Program Unit thnh cc Stored Program Unit trong CSDL
18 c php lp trnh
18.1 IF
IF condition THEN actions [ELSIF condition THEN actions] [ELSE actions]
END IF
V d 1
IF ename := 'SCOTT' THEN
beam_me_up := 'YES';
COMMIT;
ELSE
beam_me_up := 'NO';
ROLLBACK;
END IF;
V d 2
IF choice= 1 THEN action := 'Run payroll';
ELSIF choice=2 THEN action:='Run';
ELSIF choice=3 THEN action:='Backup';
ELSE action:='Invalid';
END IF;
Trang 66
18.3 FOR
FOR control_variable IN [REVERSE] low_value .. high_value
V d
FOR I IN 1..2000
LOOP
INSERT INTO numbered_rows VALUES (i);
preserve_i:=i;
....
END LOOP;
18.4 WHILE
WHILE condition
V d
WHILE Bill<250
LOOP
actions;
END LOOP;
18.5 GOTO
GOTO label
V d
BEGIN
<<label1>>
.....
GOTO label1
Trang 67
19.1 nh ngha
Cursor: l kiu bin c cu trc, cho php ta x l d liu gm nhiu dng. S dng ph thuc vo cu lnh
query sau n. Trong qu trnh x l cursor nh l mt con tr v tr ca row ang x l
Cc bc s dng bin cursor: Khai bo -> m -> ly d liu x l -> ng
Khai bo
cursor <ten( danh sch bin)> is <cu lnh select>: M vng d liu ct
tr thng tin x l.
vd: cursor x is select deptno from dept where deptno=10;
vd: cursor x(b number) is select * from dept where deptno>b;
M cursor
open <ten (tr ca bin)>
vd: open x;
vd: open x(10);
Ly d liu
Fetch <tn cursor> into <tn bin>
Vd: fetch x into b;
ng cursor
Close <tn cursor>
vd: Close x;
Cc thuc tnh
%isopen
%notfound
%found
%rowcount
V d1:
declare
cursor v_a is select * from emp;
m v_a%rowtype;
begin
open v_a;
loop
fetch v_a into m;
insert into t_thu(empno, ename,job) values (m.empno,m.ename, m.job);
exit when v_a%notfound;
end loop;
close v_a;
end;
v d 2:
DECLARE
CURSOR c1 IS SELECT dname, loc FROM dept FOR UPDATE OF loc;
dept_rec
c1%ROWTYPE;
sales_count
NUMBER:=0;
non_sales
NUMBER:=0;
Trang 68
type_name;
V d
o to c bn: SQL v PL/SQL
Trang 69
19.5 Bi tp
1. Vit on chng trnh tm kim cc hng trong bng EMP vi bin c a t ngoi vo l &1 dng
JOb_type(emp.job%type)v a ra thng bo thch hp vo bng MESSAGES.
Trang 70
20 procedure v funtion
20.1 Procedure
L mt nhm cc lnh thc hin chc nng no nhm tng kh nng x l, kh nng s dng cc th tc
chung, tng tnh bo mt v an ton d liu, tin ch trong pht trin.
C php:
Procedure
: L tn ca procedure c to.
Argument
IN
OUT
IN OUT
Trang 71
20.2 Function
C php:
DEPTNO
--------10
DNAME
-------------ACCOUNTING
LOC
------------NEW YORK
Trang 72
20.3 Bi tp
1. Vit hm ly tn gim c theo bin empno c nhp vo,
2. Vit th tc nhp thng tin vo bng message cc trng
numcol1: M phng
charcol1: tn phng ban
numcol2: tng lng ca phng
3. Vit th tc dng cursor; ly s liu v n ngi (n l mt bin c a vo t man hnh) c mc lng
cao nht trong bng emp a vo bng top_sal vi cc gi tr tng ng trong num=empno, name = ename,
salary = sal). Bng top_sal c cu trc nh sau:
NUM
NUMBER(4)
NAME
VARCHAR2(25)
SALARY NUMBER(11,2)
21 pakage
21.1 Package
L tp hp ca cc i tng gm cc procedure, function, variable, constant, cursor v cc exception.
Vic to cc package cho php tng kh nng mm do, tng tnh bo mt, to s thun li trong vic qun
l h thng ng thi tng hiu sut x l ca h thng.
to package thc hin nh sau:
ca
package
cho
nn
cc
packaged
functions
ta
phi
dng
pragma
Trang 73
:
Write no database state
Read no database state
Write no package state
Read no package state
V d:
create or replace package vidu is
function get_dname( y number) return varchar2;
Pragma Resctrict_references(get_dname, WNDS, WNPS);
Procedure ins_dept (x number, y varchar2);
end vidu;
create or replace package body vidu is
function get_dname( y number) return varchar2 is
m char(14);
begin
select dname into m from dept where deptno=y;
if SQL%notfound then
m:='Khong thay';
end if;
return(rtrim(m));
end;
procedure ins_dept(x number, y varchar2) is
begin
insert into dept(deptno,dname) values (x,y);
end;
end vidu;
gi ta thc hin nh sau:
SQL> execute vidu.ins_dept(70,'Vi du');
22 database trigger
Trang 74
Create or replace
Before
Affter
Delete, Insert, Update of <column> on <table>: trigger s c gi khi c cc hnh ng tng ng trn
tng column ca bng.
Referencing
Pl/sql_block
V d:
create or replace trigger t_dname before insert or update of
for each row when (new.dname is null)
begin
if (:new.dname is null) then
:new.dname:='No Name';
end if;
end ;
dname on dept
22.2 Bi tp
1. Vit trigger khi nhp s liu vo bng emp th n cng nhp s liu vo bng emp1 vi iu kin cu
trc bng emp1 c empno, ename, job, dname
2. Thm 1 ct vo bng DEP tn l SUMSAL. Vit trigger ct SUMSAL lun cha tng lng ca phng
ban ( d liu ly tng ng t bng emp)
3. Lp 1 bng tn l BACKUP c cu trc ging bng EMP sao cho mi bn ghi trong emp b xo s lu
sang backup
4. ng vi cc theo tc insert, update, delete trn bng emp, lu li cc theo tc vo bng message, vi
d liu tng ng charcol1 = tn thao tc, datecol2 = Ngy gi thc hin.
Trang 75
Cc exception h thng t ng b kch hot trong cc trng hp nht nh. Cc exception ngi s dng
nh ngha phi t kch hot, v d
RAISE exception_identifier;
M li
M t
NO_DATA_FOUND
ORA_01403
TOO_MANY_ROW
ORA_01422
INVALID_CURSOR
ORA_01001
Li x l CURSOR
ZERO_DIVIDE
ORA_01476
Li chia cho 0
Trang 76
ORA_00001
V d Xo nhng nhn vin trong bng emp nu ti phng nhn vin lm vic ch c mt nhn vin; trong
Procedure buider
PROCEDURE DELEMP
(V_EMP IN EMP.EMPNO%TYPE) IS
V_ID EMP.EMPNO%TYPE;
BEGIN
SELECT EMPNO
INTO V_ID
FROM EMP
WHERE EMPNO = V_EMP;
DELETE FROM EMP
WHERE EMPNO = V_EMP;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
ROLLBACK;
TEXT_IO.PUT_LINE(TO_CHAR(V_EMP)||'KHONG CO');
WHEN TOO_MANY_ROWS THEN
ROLLBACK;
TEXT_IO.PUT_LINE('CO LOI DU LIEU TRONG BANG EMP');
WHEN OTHERS THEN
ROLLBACK;
TEXT_IO.PUT_LINE('CO LOI KHAC TRONG BANG EMP');
END;
Gi chy delemp(7364);
Cc exception do ngi s dng nh ngha
Khai bo exception
identifier EXCEPTION;
V d:
DECLARE
credit_exceeded EXCEPTION;
BEGIN
IF stock_ordered > credit_limit THEN
RAISE credit_exceeded;
END IF
....
EXCEPTION
WHEN credit_exceeded THEN ....
END;
t tn cho cc exception h thng
Mi exception h thng c gn mt s xc nh, c th t tn cho cc exception d s dng hn.
PRAGMA EXCEPTION_INIT (exception_identifier, number)
o to c bn: SQL v PL/SQL
Trang 77
23.1 Bi tp
1. Dng EXCEPTION bt li cht hn cho cc bi tp t phn 19-22.
Trang 78