oracle pl/sql jegyzet

18
                                                                          

Upload: murancsik-sebestyen

Post on 13-Jul-2015

329 views

Category:

Documents


2 download

DESCRIPTION

Oracle PL/SQL jegyzet

TRANSCRIPT

Page 1: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 1/18

 

P L / S Q L      

2 0 1 1 . m á r c i u s 1 6 .  

1 . B e v e z e t é s  

M i n t m á r k o r á b b a n i s m e r t e t t ü k , a r e l á c i ó s a d a t b á z i s k e z e l ® r e n d s z e r e k m a m á r e g y e d u r a l k o d ó ( é s s z a b v á n y ) a d a t -  

k e z e l ® n y e l v e a z S Q L n y e l v . A z S Q L n y e l v s e g í t s é g é v e l h o z z á f é r h e t ü n k a z a d a t b á z i s b a n t á r o l t a d a t o k h o z , m e t a a d a -  

t o k h o z , é s l e k é r d e z h e t j ü k , m ó d o s í t h a t j u k , b ® v í t h e t j ü k a z o k a t . A z S Q L s e g í t s é g é v e l i g e n r u g a l m a s a n k e z e l h e t ® k a z  

a d a t o k , a z o n b a n v a n e g y s a j á t o s s á g a , a m e l y m i a t t n e m t e k i n t h e t ® i g a z i p r o g r a m o z á s i n y e l v n e k . E z p e d i g a z a t é n y ,  

h o g y a z S Q L n e m p r o c e d u r á l i s , a z a z n e m t a r t a l m a z v e z é r l é s i e l e m e k e t , i l l e t v e o l y a n u t a s í t á s o k a t s e m , a m e l y e k k e l  

a n e m - a d a t b á z i s f e l é t ö r t é n ® a d a t f o r g a l o m s z a b á l y o z h a t ó . A z S Q L c s a k e g y j ó l b e h a t á r o l t t e v é k e n y s é g i k ö r t f e d  

l e . E m i a t t a z S Q L ö n m a g á b a n n e m h a s z n á l h a t ó a l k a l m a z á s o k k é s z í t é s é h e z . A z S Q L m e g j e l e n i k a z a l k a l m a z á s o k -  

b a n , a m i k o r a z R D B M S - t k e l l m e g s z ó l í t a n i , d e a t ö b b i v e z é r l é s i e l e m , a d a t f o r g a l o m , i d e i g l e n e s v á l t o z ó k k e z e l é s é r e  

v o n a t k o z ó m ¶ v e l e t e k n é l m á r n e m h a s z n á l h a t ó , í g y e z e n f e l a d a t o k m e g o l d á s á r a m á s m e g o l d á s t k e l l k e r e s n i .  

A l e h e t s é g e s m e g o l d á s o k k ö z ü l m á r k o r á b b a n v e t t ü k a z S Q L u t a s í t á s o k n a k e g y h a g y o m á n y o s 3 G L n y e l v b e  

( m i n t p l . C , P a s c a l , F o r t r a n , . . . ) t ö r t é n ® b e á g y a z á s á t , a m i k o r i s a g a z d a n y e l v u t a s í t á s a i k ö z é b e s z ú r h a t u n k S Q L  

s z i n t a k t i k á j ú p a r a n c s o k a t , a m e l y e k a v é g r e h a j t á s s o r á n á t a d ó d n a k a z R D M S - n e k é s a z R D B M S v é g z i e l a k i j e l ö l t  

m ¶ v e l e t e k e t . E m e g o l d á s e l ® n y e , h o g y t ö b b k ü l ö n b ö z ® g a z d a n y e l v i s v á l a s z t h a t ó , s a p r o g r a m o z ó t á m a s z k o d h a t a  

g a z d a n y e l v k o r á b b a n e l s a j á t í t o t t i s m e r e t é r e . A 3 G L n y e l v á l t a l á n o s s á g a , r u g a l m a s s á g a b i z t o s í t j a , h o g y i g e n s o k  

t e r ü l e t r e k é s z í t h e s s ü n k í g y a l k a l m a z á s t .  

A z S Q L g a z d a n y e l v b e t ö r t é n ® b e á g y a z á s á n a k v a n a z o n b a n b i z o n y o s é r t e l e m b e n e g y f a j t a k o r l á t j a i s , a m i m i a t t a z  

S Q L p r o c e d u r á l i s e l e m e k k e l t ö r t é n ® k i b ® v í t é s e e g y m á s f a j t a ú t o n i s m e g v a l ó s u l h a t . A 3 G L n y e l v u g y a n i s b i z o n y o s  

a l k a l m a z á s i e s e t e k b e n t ú l á l t a l á n o s e s z k ö z k é s z l e t ¶ , t ú l s á g o s a n f ü g g e t l e n a z a d a t b á z i s k e z e l ® t ® l . A z t a t é n y t , h o g y  

a z a l k a l m a z á s f e j l e s z t ® e s z k ö z ö k p i a c a n a g y o b b l e h e t ® s é g e t b i z t o s í t , m i n t a z a d a t b á z i s k e z e l ® k p i a c a , a z R D B M S  

f e j l e s z t ® c é g e k v i s z o n y l a g h a m a r f e l i s m e r t é k . A z f e j l e s z t ® e s z k ö z ö k f o r g a l m a j ó v a l g y o r s a b b a n n ö v e k s z i k a z e d d i g i  

f e l m é r é s e k a l a p j á n , m i n t a z a d a t b á z u s k e z e l ® k é ( l s d . á b r a ) .  

A z a d a t b á z s k e z e l ® r e n d s z e r e k f e j l e s z t ® k , n e m a k a r v á n k i m a r a d n i e r r ® l a t e r ü l e t r ® l s e m , m a g u k i s e l k e z d t e k  

f o g l a l k o z n i 4 G L r e n d s z e r e k k i d o l g o z á s á v a l . M i n t m á r k o r á b b a n , a 4 G L r e n d s z e r e k t á r g y a l á s a k o r e m l í t e t t ü k , a  

4 G L r e n d s z e r e k n e m l é t e z h e t n e k v a l a m i l y e n 3 G L k o m p o n e n s n é l k ü l , m e l y e k k e l s p e c i á l i s , e g y e d i v e z é r l é s i e l e m e k e t  

d e n i á l h a t n a k a z e l k é s z í t e n d ® a l k a l m a z á s b a . E h h e z s z ü k s é g e s a k ö z b e n s ® e r e d m é n y e k i d e i g l e n e s t á r o l á s a , a l a p v e t ®  

v e z é r l é s i e l e m e k m e g v a l ó s í t á s a , s h i b a k e z e l é s i s .  

T ö b b f e j l e s z t ® v á l a s z t o t t a a z t u t a t , h o g y e g y h a g y o m á n y o s , m á s c é g á l t a l k i f e j l e s z t e t t 3 G L n y e l v h e l y e t t , e g y  

s a j á t , e g y s z e r ¶ s í t e t t p r o c e d u r á l i s e l e m e k k e l k i b ® v í t e t t n y e l v e t h o z o t t l é t r e . E n y e l v s a j á t a l k a l m a z á s f e j l e s z t ® r e n d s z e -  

r e i b e n k e r ü l f e l h a s z n á l á s r a . A f e j l e s z t ® r e n d s z e r e k i g é n y e i m e l l e t t m é g e g y m á s i k é r v i s s z ó l a s a j á t S Q L k i t e r j e s z t é s  

m e l l e t t : a z a d a t b á z i s - k e z e l é s f e j l ® d é s i t e n d e n c i á j a . A f e j l ® d é s u g y a n i s a z t m u t a t j a , h o g y e g y r e n a g y o b b a z i g é n y a z  

ú g y n e v e z e t t a k t í v a d a t b á z i s o k i r á n t .  

A z a k t í v a d a t b á z i s o k t e r ü l e t é n a k u t a t á s o k m á r r é g ó t a f o l y n a k , d e e r e d m é n y e i k c s a k a z e l m ú l t i d ® s z a k b a n j e l e n -  

t e k m e g a p i a c o n k a p h a t ó t e r m é k e k k ö r é b e n i s . A k t í v a d a t b á z i s o k a l a t t o l y a n a d a t b á z i s k e z e l ® r e n d s z e r e k e t é r t ü n k ,  

a m e l y e k b e n b i z o n y o s t e v é k e n y s é g e k a f e l h a s z n á l ó k ö z v e t l e n b e a v a t k o z á s a n é l k ü l v é g r e h a j t ó d n a k . E t e v é k e n y s é g i  

k ö r ö k k ö z ö t t l e g i s m e r t e b b a t r i g g e r f o g a l m a . A t r i g g e r e k d i n a m i k u s i n t e g r i t á s i f e l t é t e l t j e l e n t , a m e l y b e n a d o t t e g y  

k i v á l t ó e s e m é n y é s e g y v á l a s z t e v é k e n y s é g . A t r i g g e r m ¶ k ö d é s e i g e n e g y s z e r ¶ e l v e n t ö r t é n i k : h a a k i v á l t ó e s e m é n y  

b e k ö v e t k e z i k , a k k o r v é g r e h a j t ó d i k a v á l a s z t e v é k e n y s é g . A v á l a s z t e v é k e n y s é g t ö b b e l e m i l é p é s b ® l á l l , s e l é p é s e k  

l e h e t n e k S Q L u t a s í t á s o k , d e e m e l l e t t b i z o n y o s v e z é r l é s i e l e m e k r e i s s z ü k s é g l e h e t e g y k i c s i i t i s ö s s z e t e t t e b b v á l a s z t e -  

v é k e n y s é g e s e t é n . E t r i g g e r v á l a s z t e v é k e n y s é g k ó d o l á s á h o z t e h á t s z ü k s é g l e h e t a z S Q L k i b ® v í t é s é r e , a m i h e z m e g i n t  

c s a k c é l s z e r ¶ b b a z R D B M S e g y s a j á t n y e l v e z e t é t f e l h a s z n á l n i , m i n t e g y k ü l s ® 3 G L n y e l v e t .  

A z a d a t b á z i s o k a k t í v e l e m e i n é l m a n a p s á g e g y r e n a g y o b b t e r e t h ó d í t a n a k a t á r o l t e l j á r á s o k i s . E n n e k l é n y e g e ,  

h o g y a z a d a t k e z e l é s h e z k a p c s o l ó d ó t ö b b h e l y e n a l k a l m a z o t t e l j á r á s o k a t , f ü g g v é n y e k e t m a g á b a n a z a d a t b á z i s b a n  

h e l y e z h e t ü n k e l , m i n t e g y k ö n y v t á r s z e r ¶ e n . E n n e k e l ® n y e , h o g y c s a k e g y h e l y e n s z ü k s é g e s a k ó d o t n y i l v á n t a r t a n i , d e  

Page 2: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 2/18

 

t ö b b e n i s h o z z á f é r h e t n e k . K ö z p o n t i l a g , g y o r s a b b a n m ó d o s í t h a t ó k a r u t i n o k . A t á r o l t e l j á r á s o k a l k a l m a z á s a e s e t é n  

g y o r s a b b l e s z a v é g r e h a j t á s i s , m i v e l e l ® f e l d o l g o z o t t f o r m á b a n t á r o l ó d i k a m ¶ v e l e t , m á s r é s z t f e l e s l e g e s r é s z e k n e m  

i s m é t l ® d n e k a m e m ó r i á b a n a k o n k u r e n s f e l h a s z n á l á s o k s o r á n .  

M i n d e z e n m e g f o n t o l á s o k a l a p j á n c é l s z e r ¶ n e k l á t s z i k , h o g y a z R D B M S f e j l e s z t ® k i s l é t r e h o z z a n a k e g y k i b ® v í t e t t  

S Q L n y e l v e t , m e l y a z a l a p v e t ® f u n k c i o n á l i s e l e m e k e t b i z t o s í t j a a t r i g g e r e k , a b e é p í t e t t e l j á r á s o k , a z a l k a l m a z á s -  

f e j l e s z t é s i g é n y e i n e k t e l j e s í t é s é h e z . M i v e l e z e n a t é r e n a z e l m ú l t i d ® s z a k b a n n e m l é t e z e t t m é g s z a b v á n y ( a h í r e k  

s z e r i n t a z A N S I m o s t d o l g o z i k a z S Q L i l y e n é r t e l m ¶ , a z a z p r o c e d u r á l i s k i b ® v í t é s é n ) , e z é r t a z e g y e s f e j l e s z t ® c é g e k  

s a j á t e l k é p z e l é s e i k a l a p j á n h o z t a k l é t r e i l y e n k i b ® v í t e t t n y e l v e k e t . M i a t o v á b b i a k b a n a z O r a c l e c é g p r o c e d u r á l i s  

e l e m e k k e l k i b ® v í t e t t n y e l v é v e l , a P L / S Q L n y e l v v e l f o g u n k r é s z l e t e s e b b e n m e g i s m e r k e d n i .  

2 . P L / S Q L a l a p j a i  

A P L / S Q L n y e l v a z O r a c l e S Q L k i b ® v í t é s e . A k i b ® v í t é s a n n y i b a n p o n t a t l a n e g y k i c s i t , h o g y a P L / S Q L n e m  

t a r t a l m a z z a a z S Q L t e l j e s u t a s í t á s k é s z l e t é t , c s a k a z o n u t a s í t á s o k a t , m e l y e k a z a d a t k e z e l ® e l j á r á s o k s o r á n n a g y o b b  

s z e r e p p e l r e n d e l k e z n e k . Í g y a P L / S Q L n y e l v b e n l e h e t ® s é g v a n a z S Q L a d a t k e z e l ® u t a s í t á s a i n a k , a k u r z o r s z e r k e z e t -  

n e k é s a t r a n z a k c i ó k e z e l ® u t a s í t á s o k n a k a h a s z n á l a t á r a , d e h i á n y o z n a k b e l ® l e p é l d á u l a z a d a t d e n í c i ó s é s a v é d e l m e t  

s z a b á l y z ó u t a s í t á s o k .  

A P L / S Q L n y e l v v i s z o n t t a r t a l m a z z a a z a l a p v e t ® v e z é r l é s i e l e m e k e t , í g y a W H I L E c i k l u s t é s a z I F e l á g a z á s t  

i s . A P l / S Q L - b e n l e h e t ® s é g v a n s a j á t m e m ó r i a v á l t o z ó k l é t r e h o z á s á r a , m e l y e k k e l k ö z b e n s ® s z á m í t á s i e r e d m é n y e k  

t á r o l h a t ó k . I g e n e r ® s a n y e l v h e z k a p c s o l ó d ó h i b a k e z e l é s i k o m p o n e n s , s s z á m o s f ü g g v é n y s e g í t i a r u g a l m a s , h a t é k o n y  

p r o g r a m f e j l e s z t é s t .  

M i v e l a P L / S Q L a l k a l m a z á s á v a l a z a d a t k e z e l ® u t a s í t á s o k n e m e g y e n k é n t i S Q L u t a s í t á s o k f o r m á j á b a n k e r ü l  

v é g r e h a j t á s r a a z a d a t b á z i s - k e z e l ® h ö z , e z é r t a v é g r e h a j t á s i s e b e s s é g i s j e l e n t ® s e n j a v í t h a t ó a P L / S Q L s e g í t s é g é v e l .  

A P L / S Q L e l j á r á s o k f e l d o l g o z á s a u g y a n i s p r o g r a m e g y s é g e k b e n , ú g y n e v e z e t t b l o k k o k b a n t ö r t é n i k . A b l o k k b a n  

h e l y e t f o g l a l ó S Q L u t a s í t á s o k e g y ü t t e s é t h a t é k o n y a b b a n l e h e t o p t i m a l i z á l n i , m i n t a z e g y e n k é n t i S Q L u t a s í t á s o k a t .  

A P L / S Q L n a g y e l ® n y e , h o g y i g e n s z o r o s a n k a p c s o l ó d i k a z O r a c l e r e n d s z e r h e z , a n n a k t ö b b k o m p o n e n s é v e l i s  

i n t e g r á l h a t ó . A P L / S Q L a l k a l m a z h a t ó t ö b b e k k ö z ö t t a z S Q L P l u s , S Q L F o r m s é s m á s k o m p o n e n s e k b e n i s . E n y e l v  

e l ® n y e , h o g y f ü g g e t l e n a z a l k a l m a z o t t k o n g u r á c i ó t ó l , o p e r á c i ó s r e n d s z e r t ® l , s c s a k a f u t ó a d a t b á z i s k e z e l ® t ® l f ü g g a  

k o n k r é t f e l é p í t é s e , f o r m á t u m a .  

Ö s s z e f o g l a l ó a n a P L / S Q L e l ® n y e i a z a l á b b i p o n t o k b a n a d h a t ó k m e g :  

• p r o c e d u r á l i s e l e m e k é s S Q L ö t v ö z é s e  

•h a t é k o n y s á g  

•   j o b b i n t e g r á c i ó a z a d a t b á z i s k e z e l ® r e n d s z e r r e l  

• r u g a l m a s s á g , h o r d o z h a t ó s á g .  

A P l / S Q L n y e l v a l a p v e t ® s t r u k t u r á l i s e g y s é g e a P L / S Q L b l o k k . A b l o k k d u r v a k ö z e l í t é s s e l m e g f e l e l t e t h e t ® a h a g y o -  

m á n y o s p r o g r a m o z á s i n y e l v e n m e g í r t e l j á r á s o k n a k . A l e g f ® b b h a s o n l ó s á g a a z e l j á r á s s a l a z , h o g y a P l / S Q L b l o k k i s  

a d a t d e n í c i ó s , m a j d a z t k ö v e t ® m ¶ v e l e t i r é s z b ® l á l l , s a v é g r e h a j t á s e g y s é g é t j e l e n t i . A k ü l ö n b s é g l e g f o n t o s a b b e l e m i ,  

h o g y i t t s z i n t a k t i k a i l a g k ü l ö n s z e r e p e l e g y h i b a k e z e l ® r é s z , s a b l o k k o k e g y m á s b a i s á g y a z h a t ó k , a h o l a b e á g y a z o t t  

b l o k k a m ¶ v e l e t i v a g y h i b a k e z e l ® r é s z b e n s z e r e p e l h e t .  

A b l o k k á l t a l á n o s f e l é p í t é s é t a k ö v e t k e z ® á b r a s z e m l é l t e t i .  

A z á b r á b a n s z e r e p l ® s z a v a k a b e v e z e t ® n y e l v i u t a s í t á s o k a t j e l ö l i . A h á r o m s z e r k e z e t i e l e m k ö z ü l c s a k a m ¶ v e l e t i  

r é s z k ö t e l e z ® , a m á s i k k e t t ® e l h a g y h a t ó . A d e k l a r á c i ó s r é s z b e n a b l o k k s a j á t , l o k á l i s v á l t o z ó i t , m e m ó r i a v á l t o z ó i t  

l e h e t m e g a d n i . A m ¶ v e l e t i r é s z b e n t a l á l h a t ó k a z S Q L é s p r o c e d u r á l i s u t a s í t á s o k , m í g a h i b a k e z e l ® r é s z a f e l m e r ü l ®  

a d a t k e z e l é s i h i b á k r a a d a n d ó v á l a s z o k a t d e n i á l j a .  

A b l o k k o k e g y m á s b a á g y a z á s a e s e t é n a b e á g y a z o t t b l o k k i s a B E G I N k u l c s s z ó v a l k e r ü l b e v e z e t é s r e , s a z E N D ;  

u t a s í t á s z á r j a l e .  

D E C L A R E F ® - b l o k k k e z d e t e  

. . . 

V á l t o z ó k ,  

k o n s t a n s o k ,  

c u r s o r - s z e r k e z e t e k é s  

h i b a k e z e l é s i e l e m e k d e k l a r á l á s a  

Page 3: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 3/18

 

B E G I N F ® - b l o k k m ¶ v e l e t i r é s z k e z d e t e  

. . . U t a s í t á s o k , S Q L p a r a n c s o k , V e z é r l é s i e l e m e k  

D E C L A R E A l - b l o k k k e z d e t e  

. . . 

B E G I N A l - b l o k k m ¶ v e l e t i r é s z e  

. . . 

E X C E P T I O N A l - b l o k k h i b a k e z e l ® r é s z e  

. . . 

E N D ; A l - b l o k k v é g e  

E X C E P T I O N  

F ® - b l o k k h i b a k e z e l ® r é s z e  

. . . 

H i b a k e z e l ® m ¶ v e l e t e k l e í r á s a  

E N D ; F ® - b l o k k v é g e  

E g y P L / S Q L b l o k k t ö b b m á s i k P L / S Q L b l o k k o t i s m a g á b a n f o g l a l h a t , s a b l o k k o k t ö b b s z ö r ö s m é l y s é g b e n i s  

b e á g y a z h a t ó k e g y m á s b a . Í g y a z e l ® z ® p é l d á b a n m e g a d o t t a l - b l o k k m a g a i s t a r t a l m a z h a t t o v á b b i , s a j á t a l b l o k k o k a t .  

A b e á g y a z á s g y a k o r l a t i l a g t e t s z ® l e g e s m é l y s é g i g f o l y t a t h a t ó ( A P L / S Q L 1 . 0 v á l t o z a t á b a n 2 0 0 s z i n t i g l e h e t l e m e n n i ) .  

A h a g y o m á n y o s a l p r o g r a m o k , e l j á r á s o k h o z s z o k o t t p r o g r a m o z ó k n a k f e l t ¶ n h e t , h o g y a b l o k k o k d e k l a r á l á s á n á l  

h i á n y z i k e g y b l o k k a z o n o s í t ó . A P L / S Q L r e n d s z e r b e n v a l ó b a n n i n c s f e l h a s z n á l ó á l t a l a d o t t e g y e d i n e v e a b l o k k o k -  

n a k . E b b ® l k ö v e t k e z ® e n a b l o k k o k ö n m a g u k b a n n e m h í v h a t ó k m e g m á s b l o k k o k b ó l . A k é s ® b b i e k b e n l á t h a t ó l e s z ,  

h o g y a P L / S Q L b l o k k o k i g a z á b ó l r i t k á n h a s z n á l a t o s a k ö n m a g u k b a n , m i n d i g v a l a m i l y e n k ö r n y e z e t b e n , m á s t í p u s ú  

o b j e k t u m o k ( p l . t á r o l t e l j á r á s o k , t r i g g e r e k ) r é s z e k é n t j e l e n i k m e g , m e l y e k n e k m á r v a n e g y e d i a z o n o s í t ó n e v e , í g y a  

b e f o g l a l ó o b j e k t u m o k o n k e r e s z t ü l t u d u n k a l e t á r o l t b l o k k o k r a h i v a t k o z n i .  

A b l o k k o k e g y m á s b a á g y a z á s á h o z k a p c s o l ó d ó a n m e g e m l í t j ü k , h o g y a b e á g y a z o t t b l o k k a k ü l s ® b l o k k r é s z e k é n t  

k e z e l e n d ® . Í g y p é l d á u l a k ü l s ® b l o k k b a n d e k l a r á l t v á l t o z ó k a b e á g y a z o t t b l o k k b a n i s l á t h a t ó k l e s z n e k . A z a l b l o k k  

f ü g g e t l e n s é g e a b b a n n y i l v á n u l m e g , h o g y ® m a g a i s h o z h a t l é t r e s a j á t v á l t o z ó k a t , m e l y e k a z o n o s a z o n o s í t ó n e v e t  

i s k a p h a t n a k , m i n t a k ü l s ® b l o k k b a n l é t r e h o z o t t v á l t o z ó k . E z u t ó b b i e s e t b e n a b e l s ® b l o k k b a n d e k l a r á l t v á l t o z ó  

e g y ú j v á l t o z ó l e s z , a m e l y a z a l b l o k k b a n e l r e j t i a k i n n d e k l a r á l t u g y a n i l y e n n e v ¶ v á l t o z ó t . A l o k á l i s a n l é t r e h o z o t t  

v á l t o z ó n a k t e h á t i t t i s e l s ® b b s é g e v a n a k ü l s ® v á l t o z ó k k a l s z e m b e n .  

A k ö v e t k e z ® k b e n s o r r a v e s s z ü k a P L / S Q L u t a s í t á s a i t , m a j d e z t k ö v e t ® e n a P L / S Q L b l o k k o k a l k a l m a z á s á r a ,

f e l h a s z n á l á s á r a t é r ü n k k i .  

3 . P L / S Q L b l o k k d e k l a r á c i ó s r é s z e  

A v á l t o z ó k l é t r e h o z á s á t a D E C L A R E k u l c s s z ó t k ö v e t ® r é s z b e n k e l l m e g a d n i . A v á l t o z ó k d e k l a r á c i ó j á n a k f o r m á t u m a :  

v á l t o z ó a z o n o s í t ó t í p u s ( a t t r i b ú t u m ) : = k i f e j e z é s ;  

A z a t t r i b ú t u m e g y o p c i o n á l i s t a g , a m e l y s e g í t s é g é v e l m á r m e g l é v ® , a z a d a t b á z i s b a n l é t e z ® o b j e k t u m o k a l a p j á n  

h o z h a t u n k l é t r e v á l t o z ó k a t . A d e k l a r á c i ó s s o r v é g é n á l l ó k i f e j e z é s i s o p c i o n á l i s t a g . S z e r e p e a v á l t o z ó i n i c i a l i z á l á s b a n  

á l l .  

A d a t t í p u s k é n t a z a l á b b i t í p u s o k a t l e h e t f e l h a s z n á l n i :  

N U M B E R   n u m e r i k u s é r t é k , o p c i o n á l i s a n k i j e l ö l h e t ® a t e l j e s á b r á z o l á s i h o s s z é s a t i z e d e s j e g y e k d a r a b s z á m a  

C H A R   s z ö v e g e s é r t é k , o p c i o n á l i s a n k i j e l ö l h e t ® a k a r a k t e r e k d a r a b s z á m a  

D A T E   d á t u m t í p u s  

B O O L E A N   l o g i k a i a d a t t í p u s  

A z a l a p t í p u s o k m e l l e t t a z R D B M S f e j l ® d é s é v e l t o v á b b i a d a t t í p u s o k i s m e g j e l e n n e k , m e l y e k r e m o s t n e m t é r ü n k k i .  

A z ú j t í p u s o k f o r m á t u m á t s z ü k s é g e s e t é n a z a k t u á l i s , f e l h a s z n á l t P L / S Q L v e r z i ó k é z i k ö n y v é b e n t a l á l h a t j u k m e g .  

V e g y ü n k n é h á n y p é l d á t a z a l a p t í p u s o k h a s z n á l a t á r a :  

D E C L A R E  

Page 4: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 4/18

 

k o r N U M B E R ( 6 , 2 ) : = 3 ;  

- - n u m e r i k u s é r t é k ,  

- - 6 s z á m j e g y ,  

- - 2 t i z e d e s j e g y ,  

- - i n d u l ó é r t é k e 3  

n e v C H A R ( 2 5 ) ;  

- - s z ö v e g e s , 2 5 k a r a k t e r  

d a t u m D A T E : = ' 1 8 - J U L - 9 7 ' ;  

- - d á t u m , k e z d ® é r t é k e - - 9 7 . j ú l i u s 1 8 . - a  

r e s z v e t e l B O O L E A N ; - - l o g i k a i  

A m e g a d o t t p é l d á b ó l l á t h a t ó , h o g y a P L / S Q L b l o k k b a n a s o r v é g é i g t e r j e d ® m e g j e g y z é s e k e t a j e l l e l k e l l b e v e z e t n i .  

A d e k l a r á c i ó s r é s z b e n a v á l t o z ó k m e l l e t t k o n s t a n s o k a t i s m e g a d h a t u n k . E g y s z i m b ó l u m a k k o r l e s z k o n s t a n s , h a  

a z a z o n o s í t ó n é v é s a t í p u s k ö z é b e í r j u k a C O N S T A N T k u l c s s z ó t . A k o n s t a n s o k e s e t é n k ö t e l e z ® a z i n i c i a l i z á c i ó s  

r é s z . A p é l d á b a n a z á r f o l y a m é r t é k e s z e r e p e l k o n s t a n s k é n t :  

A R F O L Y A M C O N S T A N T n u m b e r ( 6 , 1 ) : = 1 0 3 . 2 ;  

A z a t t r i b ú t u m o k s e g í t s é g é v e l l é t e z ® a d a t b á z i s o b j e k t u m o k h o z k a p c s o l ó d ó v á l t o z ó k a t , k o n s t a n s o k a t h o z h a t u n k l é t r e ,  

m e l y n é l a l é t r e j ö v ® v á l t o z ó , v a g y k o n s t a n s u g y a n o l y a n t í p u s ú l e s z , m i n t a k i j e l ö l t a d a t b á z i s o b j e k t u m . A z a d a t b á -  

z i s o b j e k t u m l e h e t m e z ® v a g y t á b l a r e k o r d . E n n e k m e g f e l e l ® e n k é t f a j t a a t t r i b ú t u m a l k a l m a z h a t ó a d e k l a r á c i ó n á l , a  

% T Y P E é s a % R O W T Y P E .  

D E C L A R E  

v a l t o z o 1 t a b l a . m e z o % T Y P E ;  

v a l t o z o 2 v a l t o z o _ v a g y _ k o n s t a n s % T Y P E ;  

A % T Y P E a t t r i b ú t u m o t a k k o r h a s z n á l j u k , h a e g y v á l t o z ó , v a g y e g y k o n s t a n s a d a t t í p u s á t e g y m á r a t á b l á b a n l é t e z ®  

m e z ® a d a t t í p u s á n a k m e g f e l e l ® e n s z e r e t n é n k d e k l a r á l n i :  

N E V E M B E R . N E V % T Y P E ;  

A p é l d á b a n a n e v v á l t o z ó t í p u s a m e g e g y e z i k a z e m b e r t á b l a n e v a z o n o s í t ó j ú m e z ® j é n e k a t í p u s á v a l . A z % T Y P E  

a t t r i b ú t u m e l ® n y e , h o g y n e m k e l l i s m e r n i a h i v a t k o z o t t m e z ® ( a m i b ® l o l v a s n i f o g u n k , v a g y a m i b e í r n i f o g u n k )  

t í p u s á t , é s h a m e g v á l t o z t a t j u k a m e z ® t í p u s á t , n i n c s s z ü k s é g a P L / S Q L b l o k k m ó d o s í t á s á r a , a v á l t o z ó a d a t t í p u s a  

a f u t á s s o r á n a u t o m a t i k u s a n i l l e s z t ® d i k a z a d a t b á z i s h o z .  

A % R O W T Y P E a t t r i b ú t u m o t o t a k k o r h a s z n á l j u k , h a e g y r e k o r d v á l t o z ó t k í v á n u n k l é t r e h o z n i . A l é t r e j ö v ®  

v á l t o z ó e g y r e k o r d t í p u s ú v á l t o z ó l e s z , a m e l y t ö b b m e z ® t i s t a r t a l m a z h a t . A m e z ® k n e v e i é s d a r a b s z á m a m e g e g y e z i k  

a z a d a t t á b l a m e z ® i n e k n e v e i v e l é s d a r a b s z á m á v a l . A r e k o r d v á l t o z ó m e z ® i t a  

R E K O R D N É V . M E Z N É V  

h i v a t k o z á s s a l é r h e t j ü k e l . A p é l d á b a n a z e m b e r t á b l a s o r a i h o z h o z z u n k l é t r e v á l t o z ó t :  

E M B E R E M B E R % R O W T Y P E ;  

A b e o l v a s á s u t á n a b e o l v a s o t t s o r n e v m e z ® j é n e k é r t é k e a  

E M B E R . N E V  

h i v a t k o z á s s a l é r t h e t ® e l . A v á l t o z ó k , k o n s t a n s o k m e l l e t t a z a d a t o k a d a t b á z i s b ó l t ö r t é n ® b e o l v a s á s á n á l h a s z n á l a t o s  

k u r z o r s t r u k t ú r á t i s a d e k l a r á c i ó s r é s z b e n k e l l m e g h a t á r o z n i . A k u r z o r m ¶ k ö d é s é r ® l , m e g a d á s á r ó l a m ¶ v e l e t i r é s z  

k a p c s á n f o g u n k r é s z l e t e s e b b e n í r n i .  

4 . P L / S Q L m ¶ v e l e t e i  

A P L / S Q L b l o k k a k ö v e t k e z ® u t a s í t á s o k a t t a r t a l m a z h a t j a :  

Page 5: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 5/18

 

P a r a n c s J e l e n t é s  

: = é r t é k a d á s  

C L O S E k u r z o r l e z á r á s a ( S Q L u t a s í t á s )  

C O M M I T t r a n z a k c i ó s i k e r e s l e z á r á s a ( S Q L u t a s í t á s )  

D E L E T E a d a t o k t ö r l é s e a z a d a t b á z i s b a n ( S Q L u t a s í t á s )  

E X I T k i l é p é s a c i k l u s b ó l  

F E T C H r e k o r d b e o l v a s á s a k u r z o r b ó l ( S Q L u t a s í t á s )  

G O T O u g r á s a m e g a d o t t c i m k é r e  

I F f e l t é t e l e s e l á g a z á s  

I N S E R T a d a t o k b e s z ú r á s a a z a d a t b á z i s b a ( S Q L u t a s í t á s )  

L O C K T A B L E t á b l á k z á r o l á s a ( S Q L u t a s í t á s )  

L O O P c i k l u s s z e r v e z ® u t a s í t á s  

N U L L ü r e s u t a s í t á s  

O P E N k u r z o n y i t á s a ( S Q L u t a s í t á s )  

R A I S E h i b a j e l e n s é g k i v á l t á s a  

R O L L B A C K t r a n z a k c i ó v i s s z a g ö r g e t é s e ( S Q L u t a s í t á s )  

S A V E P O I N T t r a n z a k c i ó m e n t é s i p o n t ( S Q L u t a s í t á s )  

S E L E C T . . I N T O l e k é r d e z é s a z a d a t b á z i s b ó l ( S Q L u t a s í t á s )  

S E T T R A N S A C T I O N t r a n z a k c i ó p a r a m é t e r e z é s ( S Q L u t a s í t á s )  

U P D A T E a d a t o k m ó d o s í t á s a a z a d a t b á z i s b a n ( S Q L u t a s í t á s )  

A z e g y e s m ¶ v e l e t e k v é g r e h a j t á s á t s z á m t a l a n s e g é d f ü g g é n y s e g í t i , m e l y e k k e l t ö b b e k k ö z ö t t n u m e r i k u s , k a r a k t e r -  

k e z e l é s i , d á t u m k e z e l é s i é s k o n v e r z i ó s m ¶ v e l e t e k v é g e z h e t ® k . A z u t a s í t á s o k f e l s o r o l á s á b ó l i s l á t s z i k , h o g y a P L / S Q L  

a k ü l v i l á g f e l é z á r t , c s a k a z a d a t b á z i s b a n t á r o l t a d a t o k h o z f é r h o z z á . A d a t é r t é k e k e t , m i n t p é l d á u l a v á l t o z ó k t a r t a l -  

m á t n e m l e h e t v e l e a k é p e r n y ® r e , n o r m á l á l l o m á n y b a k i í r n i , v a g y a k é p e r n y ® r ® l , n o r m á l á l l o m á n y b ó l b e o l v a s n i . Í g y  

p é l d á u l a S E L E C T u t a s í t á s n a k c s a k P r o C - b ® l m e g i s m e r t S E L E C T . . . I N T O f o r m á t u m a h a s z n á l h a t ó . A S E L E C T  

e r e d m é n y e i t a b l o k k v á l t o z ó i b a n k e l l f e l f o g n i . T e r m é s z e t e s e n e z e n é r t é k e k n e m v e s z n e k e l ö r ö k r e e l ® l ü n k , a k a p -  

c s o l a t o t a P L / S Q L b l o k k é s a k ü l v i l á g k ö z ö t t a k a p c s o l ó d ó s e g é d p r o g r a m o k , m i n t p é l d á u l a S Q L F o r m s v a g y a z  

S Q L P l u s b i z t o s í t j a .  

A k ö v e t k e z ® k b e n r é s z l e t e s e b b e n b e m u t a t j u k a z e g y e s P L / S Q L u t a s í t á s o k a t . A z u t a s í t á s o k a t a z S Q L - h e z h a s o n -  

l ó a n i t t i s p o n t o s v e s s z ® h a t á r o l j a .  

4 . 1 . É r t é k a d á s  

A l e g e g y s z e r ¶ b b m ¶ v e l e t a z é r t é k a d á s m ¶ v e l e t e . A z é r t é k a d á s b a l o l d a l á n v á l t o z ó n a k k e l l á l l n i a , j o b b o l d a l á n p e d i g  

v á l t o z ó k b ó l , k o n s t a n s o k b ó l é s b e é p í t e t t f ü g g v é n y e k b ® l á l l ó k i f e j e z é s s z e r e p e l . A z a l á b b i p é l d á b a n a z x v á l t o z ó  

é r t é k é t e g g y e l m e g n ö v e l j ü k :  

x : = x + 1 ;  

4 . 2 . V e z é r l é s i s z e r k e z e t e k , e l á g a z á s  

A z e l á g a z á s , a f e l t é t e l e s m ¶ v e l e t e k k i j e l ö l é s é r e a z I F s z e r k e z e t s z o l g á l , m e l y n e k f o r m á t u m a :  

I F f e l t é t e l 1 T H E N  

u t a s í t á s o k 1  

E L S E I F f e l t é t e l 2 T H E N  

u t a s í t á s o k 2  

E L S E I F f e l t é t e l 3 T H E N  

u t a s í t á s o k 3  

. . . .  

E L S E  

Page 6: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 6/18

 

u t a s í t á s o k N  

E N D I F ;  

A z u t a s í t á s o k 1 r é s z a k k o r h a j t ó d i k v é g r e , h a a f e l t é t e l 1 i g a z é r t é k r e é r t é k e l ® d i k k i . A z u t a s í t á s o k 2 r é s z r e a k k o r k e r ü l  

s o r , h a f e l t é t e l 1 h a m i s , d e f e l t é t e l 2 i g a z é r t é k ¶ . A z u t a s í t á s o k 3 v é g r e h a j t á s á n a k f e l t é t e l e , h o g y f e l t é t e l 1 , f e l t é t e l 2  

h a m i s , m í g f e l t é t e l 3 i g a z l e g y e n . A l e g u t o l s ó u t a s í t á s o k N a k k o r h a j t ó d i k v é g r e , h a a z ö s s z e s e l ® z ® f e l t é t e l e k m i n d  

h a m i s é r t é k ¶ e k . A z I F s z e r k e z e t b e n a z E L S E I F v a l a m i n t a z E L S E r é s z e k a h o z z á j u k t a r t o z ó u t a s í t á s o k k a l e g y ü t t  

o p c i o n á l i s a k . A k ö v e t k e z ® b e n a z x v á l t o z ó é r t é k é t y é r t é k é n e k f ü g g v é n y é b e n á l l í t j u k b e :  

I F x > 1 5 T H E N  

y : = x - 1 2 ;  

E L S E  

y : = x + 1 2 ;  

E N D I F ;  

A f e l t é t e l r é s z b e n a h a g y o m á n y o s o p e r á t o r o k , r e l á c i ó k m e l l e t t a l k a l m a z h a t ó k a z S Q L - b e n m e g i s m e r t s p e c i á l i s o p e -  

r á t o r o k i s , m i n t a z  

P a r a n c s J e l e n t é s  

I S [ N O T ] N U L L ü r e s é r t é k e l l e n ® r z é s e  

[ N O T ] L I K E s z ö v e g k e r e s é s m i n t a a l a p j á n  

[ N O T ] B E T W E E N é r t é k t a r t o m á n y b a k e r e s  

[ N O T ] I N h a l m a z b a n v a l ó e l ® f o r d u l á s  

o p e r á t o r o k .  

4 . 3 . V e z é r l é s i s z e r k e z e t , c i k l u s o k  

A P L / S Q L t ö b b f é l e i t e r a t í v v e z é r l é s i s z e r k e z e t e t i s b i z t o s í t a z i s m é t l ® d ® e n e l v é g z e n d ® u t a s í t á s o k c i k l u s o k b a t ö r t é n ®  

s z e r v e z é s é h e z . A c i k l u s o k a l a p v e t ® e n a z o n o s f o r m á t u m b a n h a s z n á l h a t ó k , a z o n b a n k o n k r é t m ¶ k ö d é s i m ó d j u k n a k  

m e g f e l e l ® e n a z a l á b b i h á r o m c i k l u s f a j t á t k ü l ö n b ö z t e t j ü k m e g :  

• a l a p c i k l u s ( L O O P c i k l u s )  

• W H I L E c i k l u s  

• F O R c i k l u s  

U g y a n m é g a k u r z o r s z e r k e z e t n é l a l k a l m a z a n d ó c i k l u s t i s k ü l ö n t í p u s n a k s z o k á s v e n n i , d e m i a z t e g y c s a k e g y k é s ® b b i  

p o n t b a n f o g j u k t á r g y a l n i .  

A z a l a p c i k l u s e g y v é g t e l e n c i k l u s t v a l ó s í t m e g , e z é r t r i t k á b b a n h a s z n á l j á k ö n m a g á b a n e z t a c i k l u s f a j t á t .  

A c i k l u s f e l é p í t é s e :  

L O O P  

u t a s i t á s o k  

E N D L O O P ;  

A c i k l u s m a g b a n m e g a d o t t u t a s í t á s o k v é g t e l e n s o k s z o r i s m é t l ® d n e k , h a a v e z é r l é s n e m k e r ü l e g y c i k l u s b ó l t ö r t é n ®  

k i l é p é s u t a s í t á s á r a . A k i l é p é s t a z  

E X I T ;  

u t a s í t á s s a l l e h e t e l é r n i . A k i l é p é s t r e n d s z e r i n t v a l a m i l y e n f e l t é t e l t e l j e s ü l é s e e s e t é n h í v j u k m e g , e z é r t v a n a k i l é p é s n e k  

a f e l t é t e l m e g a d á s s a l ö s s z e k ö t ö t t v á l t o z a t a i s , m e l y n e k f o r m á t u m a :  

E X I T W H E N f e l t é t e l ;  

Page 7: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 7/18

 

E b b e n a z e s e t b e n a v e z é r l é s c s a k a k k o r l é p k i a c i k l u s b ó l , h a a m e g a d o t t f e l t é t e l i g a z é r t é k e t a d .  

A W H I L E c i k l u s e s e t é b e n a c i k l u s f e j r é s z é b e n a d j u k m e g a k i l é p é s , i l l e t v e a c i k l u s m a g ú j b ó l i v é g r e h a j t á s á n a k  

f e l t é t e l é t . A c i k l u s f o r m á t u m a :  

W H I L E f e l t é t e l L O O P  

u t a s i t á s o k  

E N D L O O P ;  

A W H I L E c i k l u s b a n a c i k l u s m a g b a n m e g a d o t t u t a s i t á s o k s o r o z a t a m i n d a d d i g v é g r e h a j t ó d i k , a m í g a W H I L E u t á n i  

f e l t é t e l k i é r t é k e l é s e i g a z a t é r t é k e t a d . A c i k l u s b e f e j e z ® d i k , h a a k i f e j e z é s é r t é k e h a m i s v a g y N U L L é r t é k ¶ l e s z .  

A F O R c i k l u s e s e t é n e g y i n d e x v á l t o z ó t k e l l k i j e l ö l n i , a m e l y m i n d e n e g é s z é r t é k e t s o r r a f e l v e s z e g y m e g a d o t t  

t a r t o m á n y o n b e l ü l . A c i k l u s m e g a d á s a :  

F O R i n d e x I N i n d u l ó _ e g é s z . . z á r ó _ e g é s z L O O P  

u t a s i t á s o k  

E N D L O O P ;  

A c i k l u s b a n m e g a d o t t i n d e x v á l t o z ó t n e m s z ü k s é g e s k ü l ö n d e k l a r á l n i a d e k l a r á c i ó s r é s z b e n , m i v e l a r e n d s z e r a u t o -  

m a t i k u s a n l é t r e h o z z a N U M B E R t í p u s ú k é n t . A c i k l u s v é g r e h a j t á s a k o r a z i n d e x e l ® b b a z i n d u l ó _ e g é s z é r t é k e t v e s z i  

f e l , s e z z e l v é g r e h a j t j a a c i k l u s m a g o t . E z t k ö v e t ® e n e g g y e l n ö v e l ® d i k a z i n d e x é r t é k e , s ú j b ó l a c i k l u s m a g e l v é g z é s e  

k ö v e t k e z i k . A n ö v e l é s - v é g r e h a j t á s s o r o z a t a a d d i g i s m é t l ® d i k m í g a z i n d e x a z á r ó _ e g é s z é r t é k é t f e l n e m d o l g o z t a .  

H a a z i n d e x é r t é k é t n e m e l ® r e , h a n e m v i s s z a f e l é s z e r e t n é n k l é p t e t n i , a z a z m i n d i g e g g y e l c s ö k k e n a v á l t o z ó é r t é k e ,  

a k k o r a c i k l u s t a z a l á b b i f o r m á t u m b a n k e l l m e g a d n i :  

F O R i n d e x I N R E V E R S E i n d u l ó _ e g é s z . . z á r ó _ e g é s z L O O P  

u t a s i t á s o k  

E N D L O O P ;  

A c i k l u s f e j r é s z é b e n m e g a d o t t i n d e x c s a k a c i k l u s o n b e l ü l l á t h a t ó é s ú g y k e z e l h e t ® , m i n t e g y k o n s t a n s : h a s z n á l h a t j u k  

a z a k t u á l i s é r t é k é t , d e k ö z v e t l e n ü l n e m v á l t o z t a t h a t j u k m e g .  

A k ö v e t k e z ® p é l d á b a n e g y t ® l t í z i g ö s s z e a d j u k a z e g é s z s z á m o k a t e g y v á l t o z ó b a n :  

x : = 0 ;  

F O R i n d I N 1 . . 1 0 L O O P  

x : = x + i n d ;  

E N D L O O P ;  

4 . 4 . F e l t é t e l n é l k ü l i v e z é r l é s - á t a d á s  

A n a g y o b b m é r e t ¶ , k e v é s b é s z a b á l y o s v e z é r l é s - á t a d á s o k m e g v a l ó s í t á s á r a r e n d e l k e z é s r e á l l a G O T O u t a s í t á s , m e l y n e k  

f o r m á t u m a :  

G O T O c í m k e ;  

A c í m k é t a b l o k k b a n , a m ¶ v e l e t i r é s z b e n h e l y e z h e t j ü k e l . A c í m k e a z o n o s í t ó t n e m k e l l e l ® z ® l e g d e n i á l n i . A c í m k e  

k i j e l ö l é s é n e k a l a k j a :  

< < c i m k e > > 

A c í m k e h a s z n á l a t á r a , a v e z é r l é s - á t a d á s r a v i s z o n y l a g t ö b b m e g k ö t é s i s v o n a t k o z i k . E l s ® k é n t m e g k e l l e m l í t e n i , h o g y  

c í m k e c s a k v é g r e h a j t h a t ó u t a s í t á s o k e l ® t t á l l h a t , t e h á t n e m s z e r e p e l h e t E N D I F , E N D L O O P , E N D k u l c s s z a v a k  

e l ® t t . E m e g k ö t é s s z e r e n c s é r e i g e n k ö n n y e n k i k e r ü l h e t ® , h a a k í v á n t h e l y r e b e s z ú r u n k e g y ü r e s u t a s í t á s t ( N U L L  

u t a s í t á s t ) , a m e l y f o r m a i l a g v é g r e h a j t a t ó u t a s í t á s , h a b á r s e m m i n e m t ö r t é n i k e r e d m é n y e k é p p e n .  

Í g y p é l d á u l a z a l á b b i p r o g r a m r é s z l e t s z i n t a k t i k a i l a g h e l y t e l e n , m i v e l a c í m k e E N D L O O P e l ® t t á l l :  

F O R x I N 1 . . 3 3 L O O P  

Page 8: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 8/18

 

. . . 

I F y > 2 0 T H E N  

G O T O u j r a ;  

E N D I F ;  

. . . 

< < u j r a > > 

E N D L O O P ;  

A k i j a v í t o t t v á l t o z a t b a n a z E N D L O O P e l é e g y ü r e s u t a s í t á s t t e s z ü n k :  

F O R x I N 1 . . 3 3 L O O P  

. . . 

I F y > 2 0 T H E N  

G O T O u j r a ;  

E N D I F ;  

. . . 

< < u j r a > > 

N U L L ;  

E N D L O O P ;  

T o v á b b i m e g k ö t é s , h o g y a G O T O p a r a n c c s a l n e m u g o r h a t u n k t e t s z ® l e g e s c i m k é r e , c s a k o l y a n r a , a m e l y a z a d o t t  

u t a s í t á s c s o p o r t b a n , v a g y a z ® t t a r t a l m a z ó k ü l s ® u t a s í t á s c s o p o r t o k v a l a m e l y i k é b e n h e l y e z k e d i k e l . U t a s í t á s c s o p o r t  

a l a t t n e m c s a k P L / S Q L b l o k k o k a t , h a n e m e g y v e z é r l é s i u t a s í t á s s a l ( I F , L O O P ) ö s s z e k ö t ö t t u t a s í t á s o k a t é r t ü n k . Í g y  

p é l d á u l a z a l á b b i b l o k k b a n h e l y t e l e n a v e z é r l é s á t a d á s m ¶ v e l e t e :  

. . . 

G O T O b e l u l ;  

I F x I S N U L L T H E N  

y : = - 1 ;  

< < b e l u l > > x : = x + 1 ;  

E N D I F  

. . . 

A h i b a o k a , h o g y e g y t a r t a l m a z o t t u t a s í t á s c s o p o r t b a k e l l b e l é p n i , a m i t n e m e n g e d m e g a P L / S Q L . H a e g y m á s s a l

f e l c s e r é l j ü k a z u g r á s é s a c í m k e p o z í c i ó j á t , a k k o r v i s z o n t h e l y e s e l r e n d e z é s t k a p u n k , m i v e l a z u g r á s a k ü l s ® , a G O T O  

u t a s í t á s t t a r t a l m a z ó c s o p o r t b a t ö r t é n i k . A z a l á b b i p é l d a e g y h e l y e s b l o k k r é s z l e t e t m u t a t .  

< < b e l u l > > 

N U L L ;  

I F x I S N U L L T H E N  

y : = - 1 ;  

G O T O b e l u l ;  

x : = x + 1 ;  

E N D I F  

A h i b a k e z e l ® r é s z b e n i s s z e r e p e l h e t G O T O u t a s í t á s é s c í m k e i s . A z o n b a n i t t o l y a n m e g k ö t é s á l l f e n n , h o g y k i n t r ® l ,  

a m ¶ v e l e t i r é s z b ® l n e m l e h e t b e u g r a n i a h i b a k e z e l ® r é s z b e , s a h i b a k e z e l ® r é s z b ® l s e m á t l é p n i a s a j á t P L / S Q L b l o k k  

m ¶ v e l e t i r é s z é b e .  

A c í m k é k n e m c s a k v é g r e h a j t h a t ó u t a s í t á s o k e l ® t t á l l h a t n a k , h a n e m b l o k k o k e l ® t t i s , a z a z a b e v e z e t ® D E C L A R E  

v a g y B E G I N k u l c s s z a v a k e l ® t t . E c í m k é k s z e r e p e e l s ® s o r b a n n e m a v e z é r l é s á t a d ó u g r á s o k n á l v a n , h a n e m a v á l -  

t o z ó k e l é r é s é n é l . M i n t m á r k o r á b b a n e m l í t e t t ü k , e g y a d o t t b l o k k b a n d e k l a r á l t v á l t o z ó e l r e j t i a k ü l s ® b l o k k b a n  

u g y a n o l y a n n é v e n l é t r e h o z o t t v á l t o z ó k a t . A c í m k e h a s z n á l a t á v a l l e h e t ® s é g v a n a z o n b a n a r r a , h o g y b l o k k r a e x p l i c i t e  

h i v a t k o z z u n k , í g y k ö z v e t l e n ü l h i v a t k o z h a t u n k a b e n n e l é t r e h o z o t t v á l t o z ó k r a i s a  

Page 9: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 9/18

 

b l o k k _ c í m k e . v á l t o z ó  

f o r m á t u m b a n . E r r e m u t a t e g y p é l d á t a k ö v e t k e z ® k ó d r é s z l e t :  

< < k u l s o _ b l o k k > > 

D E C L A R E  

d a t u m D A T E ;  

B E G I N  

. . . 

< < b e l s o _ b l o k k > > 

D E C L A R E  

d a t u m D A T E ;  

B E G I N  

. . . 

I F d a t u m = k u l s o _ b l o k k . d a t u m T H E N  

. . . .  

E N D I F ;  

E N D b e l s o _ b l o k k ;  

. . . .  

E N D k u l s o _ b l o k k ;  

A p é l d á b a n a s a j á t é s a k ü l s ® b l o k k b a n d e k l a r á l t u g y a n o l y a n a z o n o s í t ó v a l r e n d e l k e z ® v á l t o z ó k a t h a s o n l í t j u k ö s s z e .  

M i n t a p é l d a i s m u t a t j a , h a a b l o k k e l ® t t c í m k é t a d u n k m e g a b l o k k a z o n o s í t á s á r a , a k k o r a b l o k k v é g é n i s s z e r e p e l -  

t e t n i k e l l u g y a n a z t a c í m k é t . A c í m k e h a s z n á l a t a n e m c s a k a h i v a t k o z á s i k ö r t s z é l e s í t i , h a n e m e g y b e n á t t e k i n t h e t ® b b é  

t e s z i a p r o g r a m l i s t á j á t , í g y h a s z n á l a t a f e l t é t l e n ü l j a v a s o l t .  

4 . 5 . A d a t b á z i s a d a t o k k e z e l é s e  

A P L / S Q L b l o k k o k f ® f u n k c i ó j a a z a d a t b á z i s b a n t á r o l t i n f o r m á c i ó k k e z e l é s e . E h h e z o l v a s n i , m ó d o s í t a n i , t ö r ö l n i k e l l  

t u d n i a z a d a t o k a t , a h o l a z i n f o r m á c i ó k n e m c s a k a z a d a t b á z i s b ó l , h a n e m a P L / S Q L b l o k k v á l t o z ó i b ó l i s j ö h e t n e k .  

E t e r ü l e t m a g á b a f o g l a l j a a z i s m e r t a d a t k e z e l ® S Q L u t a s í t á s o k a t , é s a S E L E C T u t a s í t á s t , p o n t o s a b b a n a n n a k  

S E L E C T I N T O a l a k j á t . A n a g y o b b t ö m e g ¶ , t ö b b r e k o r d b ó l á l l ó e r e d m é n y r e k o r d o k l e k é r d e z é s é r e , a g a z d a n y e l v i  

p r o g r a m o z á s b a n m á r m e g i s m e r t m ó d o n , a k u r z o r s e g í t s é g é v e l v a l ó s í t h a t ó m e g .  

A z P L / S Q L b l o k k é s a z a d a t b á z i s k ö z ö t t i a d a t f o r g a l o m m e g v a l ó s í t á s a a P L / S Q L v á l t o z ó k o n k e r e s z t ü l t ö r t é n i k .  

A P L / S Q L v á l t o z ó k u g y a n ú g y f e l h a s z n á l h a t ó k a z S Q L u t a s í t á s o k b a n , m i n t a g a z d a n y e l v i p r o g r a m o k b a n , a z z a l

a f o r m á l i s k ü l ö n b s é g g e l , h o g y i t t n e m á l l k e t t ® s p o n t a v á l t o z ó a z o n o s í t ó e l ® t t a z S Q L u t a s í t á s b a n . A P r o C - b e n  

m e g i s m e r t b e á g y a z o t t S Q L - t ® l m e g a b b a n i s k ü l ö n b ö z i k a P L / S Q L S Q L k e z e l é s e , h o g y i t t n e m á l l s e m m i l y e n  

b e v e z e t ® k u l c s s z ó a z S Q L u t a s í t á s e l ® t t . A k ö v e t k e z ® p é l d á b a n a z x v á l t o z ó b a o l v a s s u k b e a l e g n a g y o b b é l e t k o r t , s  

e z u t á n m ó d o s í t j u k a z i l y e n é l e t k o r ú s z e m é l y e k p o n t s z á m á t :  

D E C L A R E  

m a x e N U M B E R ( 3 ) ;  

B E G I N  

S E L E C T M A X ( k o r )  

I N T O m a x e  

F R O M s z e m e l y e k ;  

U P D A T E s z e m e l y e k  

S E T p o n t = p o n t + 1  

W H E R E k o r = m a x e ; E N D ;  

Page 10: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 10/18

 

H a a z a d a t b á z i s b a n l é t e z i k a v á l t o z ó n e v é v e l m e g e g y e z ® a z o n o s í t ó j ú m e z ® , a k k o r a z a d a t b á z i s m e z ® n e k v a n p r i o r i t á s a  

a z v á l t o z ó v a l s z e m b e n .  

A z a d a t o k f e l v i t e l é r e s z o l g á l ó I N S E R T u t a s í t á s f o r m á t u m a m e g e g y e z i k a z S Q L s z a b v á n y b a n m e g i s m e r t a l a k k a l .  

A z ú j a d a t t á b l a s o r m e z ® é r t é k e i n e k m e g a d á s á n á l h i v a t k o z h a t u n k P L / S Q L v á l t o z ó k r a , m e l y e k i t t i s b e v e z e t ® k e t -  

t ® s p o n t n é l k ü l s z e r e p e l t e t h e t ü n k a V A L U E S l i s t á b a n . A k ö v e t k e z ® p é l d a a P L / S Q L v á l t o z ó k I N S E R T u t a s í t á s b a n  

t ö r t é n ® f e l h a s z n á l á s á t m u t a t j a b e ( ú j r e k o r d f e l v i t e l e a t a b l a t á b l á b a , a m e z ® é r t é k e k s o r r a x é r t é k e v a g y i s 3 , a z y  

é r t é k e v a g y i s ' A L M A ' é s 4 l e s z n e k ) :  

x : = 3 ;  

y : = ' A L M A ' ;  

I N S E R T I N T O t a b l a  

V A L U E S ( x , y , 4 ) ;  

A z a d a t b á z i s a d a t o k t ö r l é s é r e a D E L E T E S Q L u t a s í t á s s z o l g á l , s z i n t a k t i k á j a a m e g i s m e r t f o r m á t u m n a k f e l e l m e g .  

A P L / S Q L v á l t o z ó k a z u t a s í t á s W H E R E k u l c s s z ó t k ö v e t ® s z e l e k c i ó s r é s z é b e n s z e r p e l h e t n e k , m i n t a z a z a l á b b i p é l d a  

i s m u t a t j a ( t ö r l é s a z o n r e k o r d o k n a k , a h o l a z i d m e z ® é r t é k e m e g e g y e z i k a z x v á l t o z ó t a r t a l m á v a l ) :  

x : = 3 ;  

D E L E T E  

F R O M t a b l a  

W H E R E i d = x ;  

A z a d a t o k m ó d o s í t á s a a z U P D A T E S Q L u t a s í t á s s a l v a l ó s í t h a t ó m e g . A z u t a s í t á s s z i n t a k t i k á j a m e g e g y e z i k a k o r á b -  

b a n m e g i s m e r t a l a k k a l . A P L / S Q L v á l t o z ó k m i n d a z é r t é k k i f e j e z é s b e n , m i n d a s z e l e k c i ó s f e l t é t e l b e n s z e r e p e l h e t n e k .  

A k ö v e t k e z ® p é l d á b a n a t a b l a t á b l a a z o n r e k o r d j a i b a n , a h o l a k o r m e z ® é r t é k e m e g e g y e z i k a y é r t é k é v e l , m ó d o s í t j u k  

a z i d m e z ® t a r t a l m á t a z x v á l t o z ó é r t é k é r e :  

x : = 3 ;  

y : = 4 3 ;  

U P D A T E t a b l a  

S E T i d = x  

W H E R E k o r = y ;  

A z a d a t o k a d a t b á z i s b ó l t ö r t é n ® l e k é r d e z é s é n e k a S E L E C T . . . I N T O u t a s í t á s f e l e l m e g . E z a z u t a s í t á s u g y a n o l y a n  

f e l é p í t é s ¶ , i n t a P r o C - b e n m e g i s m e r t S E L E C T . . I N T O s z e r k e z e t . A z I N T O k u l c s s z ó u t á n á l l e g y l i s t a , a m e l y  

k i j e l ö l i a z o n P L / S Q L v á l t o z ó k a t , a m e l y e k b e b e l e k e r ü l n e k a l e k é r d e z é s e r e d m é n y e i . A l i s t a l e h e t t ö b b e l e m ¶ , e k k o r  

a n n y i v á l t o z ó t k e l l t a r t a l m a z n i a , a h á n y m e z ® t t a r t a l m a z a z e r e d m é n y r e k o r d , a S E L E C T p r o j e k c i ó s r é s z e . A l i s t a  

á l l h a t e g y e l e m b ® l , h a a v á l t o z ó k é n t n e m e g y e l e m i a d a t í p u s ú e l e m e t a d u n k m e g , h a n e m e g y r e k o r d t í p u s ú e l e m e t ,  

a m i n e k p o n t o s a n a n n y i é s o l y a n m e z ® j e v a n , m i n t a z e r e d m é n y r e k o r d n a k . E z u t ó b b i e l ® á l l í t á s á h o z h a s z n á l h a t ó f e l  

a % R O W Y P E a t t r i b ú t u m . T e r m é s z e t e s e n e l e m i v á l t o z ó k e s e t é n i s l e h e t e g y e l e m ¶ a l i s t a , h a a p r o j e k c i ó s r é s z c s a k  

e g y k i f e j e z é s t t a r t a l m a z . A k ö v e t k e z ® p é l d a a r e k o r d t í p u s ú v á l t o z ó a l k a l m a z á s á r a m u t a t p é l d á t :  

D E C L A R E  

e g y e d e m b e r % R O W T Y P E ;  

n e v C H A R ( 2 0 ) ;  

B E G I N  

S E L E C T *  

I N T O e g y e d  

F R O M e m b e r  

W H E R E i d = 2 3 4 5 ;  

n e v : = e g y e d . n e v ;  

E N D ;  

1 0 

Page 11: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 11/18

 

A l e k é r d e z é s S E L E C T I N T O f o r m á t u m a a z o n b a n c s a k a k k o r a l k a l m a z h a t ó , h a a l e k é r d e z é s e r e d m é n y e e g y e t l e n e g y  

r e k o r d b ó l á l l . H a a l e k é r d e z é s t ö b b e r e d m é n y r e k o r d o t i s e l ® á l l í t a n a , a k k o r a S E L E C T I N T O f o r m á t u m v é g r e h a j t á s i  

h i b á t e r e d m é n y e z . T ö b b r e k o r d b ó l á l l ó e r e d m é n y e k e l ® á l l í t á s á r a , a P r o C - h e z h a s o n l ó a n i t t i s k u r z o r s z e r k e z e t e t k e l l  

l é t r e h o z n i . A P L / S Q L k u r z o r s z e r k e z e t h a s z n á l a t a u g y a n a z o n e l v i l é p é s e k r e é p ü l , m i n t a b e á g y a z o t t S Q L e s e t é n ,  

v a g y i s a  

• k u r z o r d e k l a r á c i ó  

•k u r z o r m e g n y i t á s  

• r e k o r d b e o l v a s á s o k c i k l u s a  

• k u r z o r l e z á r á s  

l é p é s e k e t t a r t a l m a z z a . A z e g y e s l é p é s e k f o r m á t u m á b a n a z o n b a n m á r b i z o n y o s e l t é r é s é k e t v e h e t ü n k é s z r e a k é t  

r e n d s z e r , a k é t f é l e n y e l v k ö z ö t t .  

A k u r z o r l é t r e h o z á s a a P L / S Q L n y e l v b e n a d e k l a r á c i ó s r é s z b e n , s n e m a m ¶ v e l e t i r é s z b e n t ö r t é n i k , m i n t a z a  

b e á g y a z o t t S Q L e s e t é n t ö r t é n t . A k u r z o r d e k l a r á c i ó j á n a k f o r m á t u m a :  

D E C L A R E  

. . . 

C U R S O R k u r z o r n é v ( p a r a m é t e r l i s t a ) I S  

S E L E C T _ u t a s í t á s ;  

A z u t a s í t s á s b a n a z á r ó j e l e k k ö z ö t t m e g a d o t t p a r a m é t e r l i s t a o p c i o n á l i s . A d e k l a r á c i ó s u t a s í t á s b a n e g y a z o n o s í t ó  

n e v e t r e n d e l ü n k a k u r z o r s z e r k e z e t h e z , s e n é v s e g í t s é g é v e l h a j t j u k v é g r e a l e k é r d e z é s t , s e n é v s e g í t s é g é v e l f é r h e -  

t ü n k h o z z á a z e r e d m é n y h e z i s . A k u r z o r a P L / S Q L n y e l v b e n p a r a m é t e r e s e n i s d e k l a r á l h a t ó . A p a r a m é t e r e k e t a  

k a p c s o l ó d ó S E L E C T u t a s í t á s b a n k e r ü l n e k f e l h a s z n á l á s r a . A p a r a m é t e r l i s t a a p a r a m é t e r a z o n o s í t ó n e v e m e l l e t t a  

p a r a m é t e r t í p u s á t i s t a r t a l m a z z a . A l i s t a e l e m e k v e s s z ® v e l v a n n a k e l v á l a s z t v a e g y m á s t ó l . A P L / S Q L s z a b á l y a i s z e r i n t  

a m i n d e n f e l s o r o l t p a r a m é t e r n e k m e g k e l l j e l e n n i e a k a p c s o l ó d ó S E L E C T u t a s í t á s b a n i s . A S E L E C T u t a s í t á s n a k  

i t t a n o r m á l , I N T O o p c i ó n é l k ü l i f o r m á t u m a h a s z n á l h a t ó c s a k . A k ö v e t k e z ® p é l d á b a n e g y k u r z o r t d e k l a r á l u n k a  

p a r a m é t e r k é n t m e g a d o t t d á t u m e l ® t t s z ü l e t e t t s z e m é l y e k n e v é n e k é s l a k c í m é n e k a l e k é r d e z é s é r e :  

D E C L A R E  

. . . 

C U R S O R l i s t a ( d a t u m D A T E ) I S  

S E L E C T n e v , l a k c i m F R O M s z e m e l y e k W H E R E s z u l d a t < d a t u m ;  

A k u r z o r m e g n y i t á s a u t á n a k a p o t t a d a t o k a t e g y e n k é n t l e k é r d e z h e t j ü k , s m ó d o s í t h a t j u k i s . M ó d o s í t á s e s e t é n  

a z o n b a n a k u r z o r d e k l a r á c i ó j á n á l j e l e z n i k e l l , h o g y n e m c s a k o l v a s á s r a h o z z u k l é t r e a k u r z o r t . A m ó d o s í t á s i i g é n y t  

a S E L E C T u t a s í t á s v é g é n á l l ó , m á r i s m e r t  

F O R U P D A T E O F m e z ® l i s t a  

o p c i ó v a l j e l e z z ü k . A k u r z o r á l t a l v i s s z a a d o t t r e k o r d o t a  

C U R R E N T O F k u r z o r n é v  

f e l t é t e l l e l j e l ö l h e t j ü k a m e g f e l e l ® U P D A T E u t a s í t á s b a n .  

A k u r z o r m e g n y i t á s a , v a g y i s k i j e l ö l t l e k é r d e z é s e l v é g z é s e a z  

O P E N k u r z o r n é v ( p a r a m é t e r l i s t a ) ;  

u t a s í t á s s a l l e h e t s é g e s , a h o l a z á r ó j e l e k k ö z ö t t m e g a d o t t p a r a m é t e r l i s t a o p c i o n á i s e l e m . A p a r a m é t e r l i s t a m o s t k o n k -  

r é t é r t é k e k e t t a r t a l m a z , m e l y e k s o r r a b e h e l y e t t e s í t ® d n e k a d e k l a r á c i ó k o r k i j e l ö l t f o r m á l i s p a r a m é t e r e k b e , s e z e n  

é r t é k e k k e l f o g a l e k é r d e z é s v é g r e h a j t ó d n i . U g y a n a z a k u r z o r t ö b b s z ö r i s v é g r e h a j t h a t ó k ü l ö n b ö z ® a k t u á l i s p a r a m é -  

t e r é r t é k e k m e l l e t t .  

A z e r e d m é n y r e k o r d o k e g y e n k é n t i l e k é r d e z é s é r e a  

F E T C H k u r z o r n é v I N T O v á l t o z ó l i s t a ;  

1 1 

Page 12: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 12/18

 

u t a s í t á s s z o l g á l . A v á l t o z ó l i s t á n a k v a g y a n n y i e l e m i v á l t o z ó t k e l l t a r t a l m a z n i a , a h á n y e l e m ¶ a z e r e d m é n y t á b l á -  

z a t , v a g y o l y a n r e k o r d v á l t o z ó t a d m e g , m e l y s t r u k t ú r á j a m e g e g y e z i k a z e r e d m é n y t á b l a s t r u k t ú r á j á v a l . A v i z s g á l t  

P L / S Q L v á l t o z a t b a n a k u r z o r p o i n t e r c s a k e l ® r e l é p t e t h e t ® , m é g p e d i g e g y r e k o d d a l .  

A k u r z o r f e l h a s z n á l á s a u t á n c é l s z e r ¶ a k u r z o r á l t a l l e f o g l a l t e r ® f o r r á s o k a t f e l s z a b a d í t a n i . E h h e z k i k e l l a d n i a  

C L O S E k u r z o r n é v ;  

u t a s í t á s t .  

A z e r e d m é n y t á b l a t ö b b r e k o r d o t i s t a r t a l m a z h a t , e z é r t a F E T C H u t a s í t á s t t ö b b s z ö r e g y m á s u t á n i s k e l l a d n i a  

t e l j e s v á l a s z t á b l a f e l d o l g o z á s á h o z . A z e r e d m é n y t á b l a v é g é n e k g y e l é s é t , v a g y i s a n n a k e l l e n ® r z é s é t , h o g y a z ö s s z e s  

r e k o r d o t é r i n t e t t ü k - e m á r , e g y k u r z o r a t t r i b ú t u m s e g í t s é g é v e l v é g e z h e t j ü k e l . A z a t t r i b ú t u m , m e l y n e k a l a k j a  

k u r z o r n é v % N O T F O U N D  

a k k o r t a r t a l m a z i g a z é r t é k e t , h a e l é r t ü k a z e r e d m é n y t á b l a v é g é t , s n i n c s m á r t o v á á b b i f e l d o l g o z á s r a v á r ó r e k o r d a  

k u r z o r n á l .  

A l e k é r d e z ® c i k l u s , m e l y n e k m a g j á b a n a m e g f e l e l ® F E T C H u t a s í t á s á l l , e g y a l a p L O O P c i k l u s s e g í t s é g é v e l i s  

m e g o l d g h a t ó , m e l y b e a k i l é p é s h e z b e t e s z ü n k e g y  

E X I T W H E N k u r z o r n é v % N O T F O U N D ;  

u t a s í t á s t i s .  

4 . 6 . H i b a k e z e l é s  

A h i b a k e z e l ® r u t i n o k a t a P L / S Q L b l o k k h a r m a d i k k o m p o n s n e s e , a z E X C E P T I O N k u l c s s z ó v a l k e z d ® d ® r é s z t a r t a l -  

m a z z a . A h i b a k e z e l ® r é s z b e n m i n d e n e g y e s f e l i s m e r t h i b a t í p u s h o z e g y e d i v á l a s z t e v é k e n y s é g d e n i á l h a t ó . A h i b a k ó d  

é s a v á l a s z t e v é k e n y s é g ö s s z e r e n d e l é s e a  

W H E N h i b a k ó d T H E N  

u t a s í t á s o k ;  

s z e r k e z e t t e l l e h e t s é g e s . A h i b a k ó d u t a l h a t á l t a l á n o s , a r e n d s z e r á l t a l f e l i s m e r t h i b á k r a , é s s a j á t , e g y e d i h i b a t í p u s o k r a  

i s . A d e n á l t t u c a t n y i r e n d s z e r h i b a k ó d b ó l n é h á n y a t m u t a t b e a z a l á b b i f e l s o r o l á s :  

H i b a k ó d J e l e n t é s  

N O _ D A T A _ F O U N D A S E L E C T u t a í t á s v a g y a F E T C H n e m t u d e r e d m é n y r e r e k o r d o t v i s s z a a d n i  

Z E R O _ D I V I D E n u l l á v a l v a l ó o s z t á s  

V A L U E _ E R R O R a d a t k o n v e r z i ó s h i b a  

A P L / S Q L h i b a k e z e l é s i m e c h a n i z m u s á n a k s z á m o s e l ® n y e v a n a h a g y o m á n y o s m ó d s z e r r e l s z e m b e n . A h a g y o -  

m á n y o p s e l j á r á s o k b a n a h i b a k e z e l é s s z o r o s a n ö s s z e f o n ó d o t t a z u t a s í t á s o k k a l : m i n d e n m ¶ v e l e t u t á n e g y e d i l e g k e l l e t t  

m e g a d n i a h i b a e l l e n ® r z z ® é s l e k e z e l ® u t a s í t á s o k a t . A P L / S Q L e z z e l s z e m b e n e g y k ö z p o n t i h e l y e n t á r o l j a a h i b a k z e l ®  

u t a s í t á s o k a t . E m ó d s z e r p o z i t í v v o n á s a , h o g y  

• c s a k e g y s z e r k e l l l e í r n i a h i b a k e z e l ® k ó d o t , á t t e k i n t h e t ® b b f o r r á s z ö v e g  

• k ö n n y e b b m ¶ ó d o s í t á s i l e h e t ® s é g , c s a k e g y h e l y e n k e l l m ó d o s í t a n i a h i b a k e z e l ® r u t i n t .  

• n a g y o b b m e g b i z h a t ó s á g , m i v e l a h i b a e l l e n ® r z é s a u t o m a t i k u s a n m i n d e n m ¶ v e l e t r e k i t e r j e d , n e m l e h e t k i b ú j n i  

a l ó l a , h i s e n a u t o m t i k u s a n , m i n d í g é r v é n y e s u l .  

A h i b a f e l l é p t e e s e t é n a n o r m á l v e z é r l é s m e g s z a k a d , s h i b e k e z e l ® o u t a s í t á s c s o p o r t k a p j a m e g v e z é r l é s t . A h i b a  

f e l d o l g o z á s a u t á n a b l o k k v é g r e h a j t á s a i s b e f e j e z ® d i k . E g y a d o t t h i b a t í p u s e s e t é n , h a a z a k t u á l i s b l o k k n e m  

t a r t a l m a z z a a m g f e l l ® h i b a k e z e l ® r u t i n t , a k k o r a k ü l s ® b l o k k o k á t n é z é s é v e l a r e n d s z e r m e g p r ó b á l j a a m e g f e l e l ®  

h i b a k e z e l ® r u t i n t m e g t a l á l n i .  

H a a h i b a k e z e l ® u t a s í t á s c s o p o r t o t n e m c s a k e g y e t l e n e g y h i b a t í p u s h o z s z á n j u k h o z z á r e n d e l n i , a k k o r l e h e t ® s é g  

v a n a W H E N u t á n t ö b b h i b a t í p u s t i s f e l s o r o l n i , a h o l a z e g y e s t í p u s o k a t a z O R o p e r á t o r r a l k ö t j ü k ö s s z e . E m e l l e t t  

1 2 

Page 13: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 13/18

 

a l k a l m a z h a t j u k a W H E N u t á n a z O T H E R k u l c s s z ó t i s , m e l l y e l m i n d e n , e x p l i c i t e k i n e m j e l ö l t h i b a t í p u s e s e t é n i d e  

k e r ü l a v e z é r l é s .  

A r e n d s z e r á l t a l é s z l e l t h i b á k m e l l e t a f e l h a s z n á l ó m a g a i s k i v á l t h a t v é g r e h a j t á s i h i b á k a t . I t t m o s t n e m a v é l e t l e n  

p r o g r a m o z á s i h i b á k r ó l v a n s z ó , h a n e m a r r ó l , h o g y a p r o g r a m o z ó e x p l i c i t e a k t i v i z á l h a t h i b a t í p u s o k a t . E g y m e g a d o t t  

t í p u s ú h i b a k i v á l t á s a a  

R A I S E h i b a k ó d ;  

u t a s i t á s s a l t ö r t é n i k . E k k o r a v e z é r l é s a m e g f e l e l ® W H E N u t a s í t á s r a u g r i k . A s a j á t h i b a t í p u s o k a t , a g y á r i r e n d s z e r  

h i b a t í p u s o k t ó l e l t é r ® e n d e k l a r á l n i k e l l a b l o k k d e k l a r á c i ó s r é s z é b e n . A h i b a t í p u s l é t r e h o z á s a a  

h i b a t í p u s E X C E P T I O N ;  

u t a s í t á s s a l l e h e t s é g e s . A z a l á b b i p r o g r a m r é s z l e t e g y s a j á t h i b a t í p u s h a s z n á l a l a t á t m u t a t j a b e :  

D E C L A R E  

s a j a t h i b a E X C E P T I O N ;  

B E G I N  

. . . 

I F x < 1 6 T H E N  

R A I S E s a j a t h i b a ;  

E N D I F ;  

. . . 

E X C E P T I O N  

. . . 

W H E N s a j a t h i b a T H E N  

R O L L B A C K ;  

. . . 

E N D ;  

A h i b a t í p u s o k l á t h a t ó s á g á r a i s a v á l t o z ó k t á r g y a l á s á n á l m e g a d o t t s z a b á l y o k é r v é n y e s e k .  

A P L / S Q L u t a s í t á s o k á t t e k i n t é s e v é g é n e g y k o m p l e x e b b é s t e l j e s e b b m i n t a p é l d á t m u t a t u n k b e a m e g i s m e r t  

m ¶ v e l e t e k a l k a l m a z á s á r a . A m i n t a P L / S Q L b l o k k , a m e l y b e n a z a u t o t á b l á b a n a F I A T t í p u s ú a u t ó k á t l a g á r á n á l  

d r á g á b b O P E L t í p u s ú a u t ó k á r á t 1 2 % - k a l n ö v e l j ü k , h a s z i n k ó d u k P b e t ¶ v e l k e z d ® d i k é s 9 % - k a l n ö v e l j ü k , h a e g y é b  

s z í n ¶ e k .  

< < m i n t a > > 

D E C L A R E  

a t l a g N U M B E R ( 1 0 ) ; - - á t l a g á r  

s z i n C H A R ( 3 ) ; - - s z í n k ó d  

C U R S O R a u t o k ( a t g N U M B E R ( 1 0 ) ) I S - - k u r z o r  

S E L E C T s z i n  

F R O M a u t o  

W H E R E a r > a t g  

A N D t i p L I K E ' O P E L % '  

F O R U P D A T E O F a r ;  

B E G I N  

B E G I N - - a l b l o k k a z a t l g k i s z á m i t á s h o z  

S E L E C T S U M ( a r ) / C O U N T ( a r )  

I N T O m i n t a . a t l a g  

F R O M a u t o  

W H E R E t i p L I K E ' F I A T % ' ;  

1 3 

Page 14: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 14/18

 

E X C E P T I O N  

- - h a n i n c s F I A T a u t ó , a k k o r 1 0 0 0 0 0 l e s z a z á r  

W H E N Z E R O _ D I V I D E T H E N  

m i n t a . a t l a g : = 1 0 0 0 0 0 ;  

E N D ;  

O P E N a u t o k ( m i n t a . a t l a g ) ; - - k u r z o r m e g n y i t á s a  

L O O P - - l e k é r d e z ® c i k l u s  

F E T C H a u t o k I N T O m i n t a . s z i n ; - - r e k o r d b e o l v a s á s  

E X I T W H E N a u t o k % N O T F O U N D ; - - k i l é p é s h a n i n c s t ö b b  

I F m i n t a . s z i n L I K E ' P % ' T H E N  

U P D A T E a u t o  

S E T a r = a r * 1 . 1 2  

W H E R E C U R R E N T O F a u t o k ; - - m ó d o s í t á s  

E L S E  

U P D A T E a u t o  

S E T a r = a r * 1 . 0 9  

W H E R E C U R R E N T O F a u t o k ;  

E N D I F ;  

E N D L O O P ; - - c i k l u s v é g e  

C L O S E a u t o k ; - - k u r z o r l e z á r á s a  

C O M M I T ; - - e r e d m é n y e k v é g e l e g e s í t é s e  

E N D m i n t a ; - - b l o k k v é g e  

5 . A P L / S Q L b l o k k o k a l k a l m a z á s a  

A z a l k a l m a z á s o k k ö z ö t t a z e g y i k l e g f o n t o s a b b s z e r e p e t a t r i g g e r e k j á t s z á k . A t r i g g e r e k , m i n t m á r e m l í t e t t ü k ,  

a z a k t í v a d a t b á z i s o k e g y i k f o n t o s k o m p o n e n s é t j e l e n t i k . A t r i g g e r k o n c e p c i ó a z a k t í v i n t e g r i t á s i f e l t é t e l e k k ö z é  

t a r t o z i k . A t r i g g e r k é t k o m p o n e n s b ® l á l l , e g y f e l t é t e l é s e g y v á l a s z t e v é k e n y s é g r é s z b ® l . A t r i g g e r m ¶ k ö d é s i e l v e i g e n  

e g y s z e r ¶ : h a a f e l t é t e l b e k ö v e t k e z i k , a k k o r v é g h r e h a j t ó d i k a v á l a s z t e v é k e n y s é g . A f e l t é t e l t v a l a m i l y e n a d a t k e z e l ®  

m ¶ v e l e t f o r m á j á b a n a d h a t j u k m e g . V a g y i s a t r i g g e r r e l a z g y e l h e t ® , h o g y v é g r e h a j t á s r a k e r ü l - e v a l a m i l y e n k i j e l ö l t  

a d a t k e z e l ® m ¶ v e l e t . A t r i g g e r a l k a l m a z á s á v a l s z á m o s a k t í v i n t e g r i t á s i s z a b á l y d e n i á l á s a a z a l k a l m a z á s b ó l á t k e r ü l h e t  

a z a d a t b á z i s b a . E z á l t a l k ö n n y e b b é e s g y o r s a b b á v á l h a t a z a l k a l m a z á s o k f e j l e s z t é s e i s , n e m i s b e s z é l v e a n a g y o b b  

b i z t o n s á g r ó l , h i s z e n e b b e n a z e s e t b e n a z a l k a l m a z ó i p r o g r a m h i b á j á b ó l , a p r o g r a m o z ó f e l e d é k e n y s é g e m i a t t n e m  

s é r ü l h e t m e g a z a d a t b á z i s i n t e g r i t á s a , h i s z e n a z e l l e n ® r z é s m i n d í g v é g r e h a j t ó d i k a z a d a t b á z i s k e z e l ® s z o f t v e r á l t a l .  

A t r i g g e r e k n é l a v á l a s z t e v é k e n y s é g e t a z O r a c l e R D B M S e s e t é n P L / S Q L b l o k k f o r m á j á b a n l e h e t m e g a d n i . Í g y  

v á l a s z t e v é k e n y s é g m i n d a z o n t e v é k e n y s é g i k ö r r e k i t e r j e d h e t , a m i k a P L / S Q L n y e l v k e r e t é b e n l e í r h a t ó k , s ® t a r e n d s z e r  

m é g b i z o n y o s e x t r a e l e m e k e t i s b e v e z e t t a t r i g g e r k o n c e p c i ó h o z t ö r t é n ® j o b b c s a t l a k o z á s h o z .  

A t r i g g e r d e n i á l á s á n a k á l t a l á n o s f o r m á t u m a k ö v e t k e z ® k é p p e n í r h a t ó l e :  

C R E A T E T R I G G E R t r i g g e r n é v k i v á l t ó _ o k P L / S Q L _ b l o k k ;  

a h o l a k i v á l t ó _ o k a f e l t é t e l t , m í g a P L / S Q L _ b l o k k a v á l a s z t e v é k e n y s é g e t a d j a m e g . A k i v á l t ó _ o k r é s z t ö b b  

k o m p o n e n s b ® l á l l a f e l t é t e l p o n t o s m e g a d á s á r a . A f o n t o s a b b k o m p o n e n s e k j e l e n t é s e é s f o r m á t u m a a k ö v e t k e z ® :  

e l ® t a g m ¶ v e l e t O N t á b l a [ F O R E A C H R O W [ W H E N f e l t é t e l ] ]  

A z e l ® t a g a z t j e l ö l i k i , h o g y a v á l a s z t e v é k e n y s é g e t a g y e l t m ¶ v e l e t e l v é g z é s e e l ® t t v a g y u t á n k e l l - e v é g r e h a j t a n i .  

A z e l ® t a g b a n m e g a d h a t ó k u l c s s z a v a k :  

B E F O R E   m ¶ v e l e t e l ® t t i v é g r e h a j t á s  

A F T E R   m ¶ v e l e t u t á n i v é g r e h a j t á s  

A m ¶ v e l e t a g y e l t a d a t k e z e l ® m ¶ v e l e t e k k ö r é t j e l ö l i k i , í g y a z I N S E R T , U P D A T E é s D E L E T E u t a s í t á s o k r a t e r j e d  

k i . E g y t r i g g e r b e n e g y i d e j ¶ l e g t ö b b t e v é k e n y s é g i s g y e l h e t ® . A m ó d o s í t á s n á l a g y e l é s l e s z ¶ k í t h e t ® a z e g y e s  

m e z ® k r e . A z a l á b b i k u l c s s z a v a k s z e r e p e l h e t n e k a m ¶ v e l e t r é s z b e n :  

1 4 

Page 15: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 15/18

 

M ¶ v e l e t J e l e n t é s  

D E L E T E R e k o r d t ö r l é s e  

I N S E R T R e k o r d b ® v í t é s e  

U P D A T E [ O F m e z ® l i s t a ] R e k o r d m ó d o s í t á s a  

H a t ö b b m ¶ v e l e t e t i s g y e l n i k í v á n u n k , a k k o r a z e g y e s m ¶ v e l e t e k e t a z O R k a p c s o l ó v a l l e h e t ö s s z e k ö t n i .  

A t á b l a a z t a t á b l á t j e l ö l i k i , m e l y r e a m ¶ v e l e t e k v o n a t k o z n a k . E g y t r i g g e r c s a k e g y t á b l á r a v o n a t k o z h a t .  

A z o p c i o n á l i s F O R E A C H R O W t a g a k k o r h a s z n á l a t o s , h a a m e g a d o t t v á l a s z t e v é k e n y s é g e t a m ¶ v e l e t b e n é r i n t e t t  

m i n d e n e g y e s r e k o r d r a k ü l ö n - k ü l ö n v é g r e h a j t á s r a k e r ü l n e . H a e z t a t a g o k e l h a g y j u k , a k k o r a v á l a s z t e v é k e n y s é g a z  

u t a s í t á s s z i n t e n h a j t ó d i k v é g r e , u t a s í t á s o n k é n t e g y s z e r f u t l e a P L / S Q L b l o k k .  

Í g y p é l d á u l a  

C R E A T E T R I G G E R t 1  

A F T E R D E L E T E O N a u t o  

B E G I N  

I N S E R T I N T O n a p l o V A L U E S ( ' t o r l e s ' , S Y S D A T E ) ;  

E N D ;  

t r i g g e r n é l a  

D E L E T E F R O M a u t o W H E R E t i p L I K E ' F i a t 1 2 6 % ' ;  

u t a s í t á s h a t á s á r a e g y e t l e n e g y s z e r h í v ó d i k m e g a P L / S Q L b l o k k , a z a z e g y e t l e n e g y ú j r e k o r d f ¶ z ® d i k b e a n a p l ó  

á l l o m á n y b a . V i s z o n t a  

C R E A T E T R I G G E R t 2  

A F T E R D E L E T E O N a u t o  

F O R E A C H R O W  

B E G I N  

I N S E R T I N T O n a p l o V A L U E S ( ' t o r l e s ' , S Y S D A T E ) ;  

E N D ;  

t r i g g e r e s e t é n u g y a n a z o n t ö r l é s i m ¶ v e l e t n é l t ö b b s z ö r i s m e g h í v ó d i k a P L / S Q L b l o k k , m é g p e d i g a n n y i s z o r , a h á n y  

r e k o r d k e r ü l k i t ö r l é s r e . E k k o r a n a p l ó t á b l á b a a n n y i ú j r e k o r d k e r ü l b e , a h á n y r e k o r d o t k i t ö r ö l t e k a z a u t o t á b l á b ó l .  

A r e k o r d s z i n t ¶ t r i g g e r e k e s e t é n l e h e t ® s é g v a n a r r a , h o g y n e m i n d e n é r i n t e t t r e k o r d r a h í v ó d j o n m e g a v á l a s z t e -  

v é k e n y s é g , h a n e m c s a k a z o k r a , a m e l y e k e g y m e g a d o t t f e l t é t e l n e k e l g e t t e s z n e k . E s z e l e k c i ó s f e l t é t e l t  

W H E N f e l t é t e l  

o p c i o n á l i s t a g g a l a d h a t j u k m e g .  

A l é t r e h e z o t t t r i g g e r e k k é s ® b b m ó d o s í t h a t ó k i l l e t v e m e g s z ü n t e t h e t ® k a z A L T E R T R I G G E R é s D R O P T R I G G E R  

u t a s í t á s o k k a l .  

A t r i g g e r e k d e n i á l á s á n á l a r r a g y e l n i k e l l , h o g y a t r i g g e r e k n e m i z o l á l t a k e g y m á s t ó l t e l j e s e n , m i v e l e g y a z e g y i k  

t r i g g e r h e z k ö t ö t t á l a s z t e v é k e n y s é g k i v á l t h a t e g y m á s i k t r i g g e r t , í g y k i a l a k u l h a t e g y t r i g g e r m e g h í v á s i l á n c o l a t . A  

t r i g g e r e k t e r v e z é s é n é l ü g y e l n i k e l l e l á n c o l a t o k k i a l a k u l á s á r a é s h a t á s á r a i s .  

A r e n d s z e r a z t i s m e g e n g e d i , h o g y t ö b b t r i g g e r t i s d e n i á l j u n k u g y a n a z o n m ¶ v e l e t e k g y e l é s é r é r e . E g y m ¶ v e l e t -  

h e z u g y a n i s l é t e z h e t B E F O R E m ¶ v e l e t s z i n t ¶ , B E F O R E r e k o r d s z i n t ¶ , A F T E R m ¶ v e l e t s z i n t ¶ é s A F T E R r e k o r d  

s z i n t ¶ t r i g g e r . A z e g y e s t r i g g e r t í p u s o k v é g r e h a j t á s i s o r r e n d j e :  

1 . B E F O R E m ¶ v e l e t s z i n t ¶ t r i g g e r  

2 . c i k l u s a z é r i n t e t t r e k o r d o k r a  

( a ) B E F O R E r e k o r d s z i n t ¶ t r i g g e r a r e k o r d r a  

1 5 

Page 16: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 16/18

 

( b ) r e k o r d z á r o l á s a é s m ó d o s í t á s a , i n t e g r i t á s i f e l t é t e l e k e l l e n ® r z é s e  

( c ) A F T E R r e k o r d s z i n t ¶ t r i g g e r a r e k o r d r a  

3 . k é s e l t e t t e l l e n ® r z é s ¶ i n t e g r i t á s i f e l t é t e l e k e l l e n ® r z é s e  

4 . A F T E R m ¶ v e l e t i s z i n t ¶ t r i g g e r  

T ö b b k i v á l t o t t t i g g e r e s e t é n a v á l a s z t e v é k e n y s é g m i n d e n t a g j á n a k s i k e r e s e n v é g r e k e l l h a j t ó d n i a , h o g y a m ¶ v e l e t ,  

é s m i n d e n á l t a l a k i v á l t o t t v á l a s z t e v é k e n y s é g m e g ® r z ® d j ö n . A z i n t e g r i t á s ® r z é s m e c h a n i z m u s á t a k é s ® b b e k b e n , a z  

R D B M S - e k t á r g y a l á s á n á l f o g j u k m a j d r é s z l e t e z n i .  

A r e k o r d s z i n t ¶ t r i g g e r e k e s e t é n l e h e t ® s é g v a n a r r a , h o g y a z é p p e n é r i n t e t t r e k o r d a d a t a i h o z h o z z á f é r j ü n k a  

P L / S Q L b l o k k o n b e l ü l . A m e z ® k é r t é k e i t k é t r e n d s z e r r e k o r d v á l t o z ó n k e r e s z t ü l é r h e t j ü k e l . A r e n d s z e r k é t f é l e  

r e k o r d v á l t o z ó t i s t a r t a l m a z , a z e g y i k a r e k o r d r é g i , m ó d o s í t á s e l ® t t i , m í g a m á s i k a r e k o r d ú j , m ó d o s í t á s u t á n i  

é r t é k e i t t a r t a l m a z z a . A k é t r e k o r d v á l t o z ó a l a p é r t e l m e z é s s z e r i n t i a z o n o s í t ó i :  

O L D  r é g i r e k o r d é r t é k  

N E W  ú j r e k o r d é r t é k  

A P L / S Q L b l o k k o n b e l ü l e v á l t o z ó k , m i n t k ü l s ® , n e m a P L / S Q L b l o k k b a n d e k l a r á l t v á l t o z ó k s z e r e p e l n e k , e z é r t  

h i v a t k o z á s k o r n e v ü k e l é e g y k e t t ® s p o n t o t k e l l t e n n i , h a s o n l ó a n a h o g y a b e á g y a z o t t S Q L - b e n a g a z d a n y e l v i v á l t o z ó k a t  

h a s z n á l h a t j u k . A r e k o r d o n b e l ü l i r é g i m e z ® k é r t é k e k r e a  

: O L D . m e z ® n é v  

m í g a z ú j é r t é k e k r e a  

: N E W . m e z ® n é v  

s z i m b ó l u m o k k a l h i v a t k o z h a t u n k . E r e k o r d v á l t o z ó k a z o n b a n c s a k a r e k o r d s z i n t ¶ t r i g g e r e k n é l é l n e k , é s b i z o n y o s  

m ¶ v e l e t e k n é l c s a k a z e g y i k f o r m á t u m a é l . Í g y a z I N S E R T e s e t é n n i n c s é r t e l m a a z O L D h i v a t k o z á s n a k , m í g a  

D E L E T E e s e t é n a N E W h i v a t k o z á s n a k .  

H a e g y t r i g g e r t t ö b b t e v é k e n y s é g h e z k a p c s o l t u n k , p l . b e s z ú r á s h o z é s m ó d o s í t á s h o z i s , a k k o r a P L / S Q L b l o k k o n  

b e l ü l a  

K o n s t a n s J e l e n t é s  

I N S E R T I N G b e s z ú r á s j e l z ®  

U P D A T I N G m ó d o s í t á s j e l z ®  

D E L E T I N G t ö r l é s j e l z ®  

r e n d s z e r á l t a l d e n i á l t k o n s t a n s o k s e g í t s é g é v e l e l d ö n t h e t ® , h o g y m e l y m ¶ v e l e t v o l t a z é p p e n f u t ó v á l a s z t e v é -  

k e n y s é g k i v á l t ó j a . E v á l t o z ó k i g a z é r t é k e t v e s z n e k f e l , h a a h o z z á j u k t a r t ó z ó m ¶ v e l e t v o l t a k i v á l t ó t e v é k e n y s é g .  

A z a l á b b i p é l d á b a n e g y ö s s z e t e t t e b b t r i g g e r t m u t a t u n k b e , a m e l y a r r a s z o l g á l , h o g y a d o l g o z ó k t á b l a m ó d o s í t á s a  

e s e t é n a z o s z t á l y o k t á b l á t i s a k t u a l i z á l j a . A k a p c s o l a t a k é t t á b l a k ö z ö t t a b b a n á l l , h o g y m i n d e n d o l g o z ó n a k v a n e g y  

o s z t á l y a , a h o l d o l g o z i k , é s a z o s z t á l y o k t á b l á b a n v a n e g y o l y a n m e z ® , a m e l y a z o t t d o l g o z ó k ö s s z z e t é s é t t a r t a l m a z z a .  

A m i k o r e g y d o l g o z ó e l m e g y a z o s z t á l y r ó l , v a g y e g y ú j d o l g o z ó j ö n a z o s z t á l y r a , v a g y c s a k a d o l g o z ó z e t é s e v á l t o z i k ,  

a k k o r a o s z t á l y o k t á b l a m e g f e l e l ® r e k o r d j á t i s m ó d o s í t a n i k e l l :  

/ / t r i g g e r f e j r e s z e  

/ / a t á b l á b a b e s z ú r á s , t ö r l é s é s a z o s z t , f i z  

/ / m e z ® k m ó d o s í t á s f i g y e l é s e  

/ / P L / S Q L b l o k k m e g h í v á s r e k o r d s z i n t e n  

/ / m ó d o s í t á s u t á n  

C R E A T E T R I G G E R o s s z _ f i z  

A F T E R D E L E T E  

O R I N S E R T  

O R U P D A T E O F o s z t , f i z  

O N d o l g o z o k  

F O R E A C H R O W  

1 6 

Page 17: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 17/18

 

/ / P L / S Q L b l o k k k e z d e t e  

B E G I N  

/ / h a t ö r l é s v a n v a g y d o l g o z ó á t h e l y e z é s  

I F D E L E T I N G O R ( U P D A T I N G A N D  

: O L D . o s z t ! = : N E W . o s z t ) T H E N  

/ / ö s s z f i z e t é s c s ö k k e n t é s e a r é g i o s z t á l y n á l  

U P D A T E o s z t a l y o k  

S E T o s s z f i z = o s s z f i z - : O L D . f i z  

W H E R E o s z t = : O L D . o s z t ;  

E N D I F ;  

/ / h a ú j d o l g o z ó v a g y d o l g o z ó á t h e l y e z é s  

I F I N S E R T I N G  

O R ( U P D A T I N G A N D : O L D . o s z t ! = : N E W . o s z t ) T H E N  

/ / ö s s z f i z e t é s n ö v e l é s e a z ú j o s z t á l y o n  

U P D A T E o s z t a l y o k  

S E T o s s z f i z = o s s z f i z + : N E W . f i z  

W H E R E o s z t = : O L D . o s z t ;  

E N D I F ;  

/ / h a f i z e t é s m ó d o s í t á s  

I F U P D A T I N G A N D  

: N E W . o s z t = : O L D . o s z t A N D : N E W . f i z ! = : O L D . f i z ) T H E N  

/ / ö s s z f i z e t é s m ó d o s í t á s a z o s z t á l y o n U P D A T E o s z t a l y o k  

S E T o s s z f i z = o s s z f i z + : N E W . f i z - : O L D . f i z  

W H E R E o s z t = : N E W . o s z t ;  

E N D I F ;  

/ / b l o k k v é g e  

E N D ;  

A t r i g g e r e k a l k a l m a z á s á n a k r u g a l m a s s á g á t f o k o z z a , h o g y i d e i g l e n e s e n l e i s l e h e t t i l t a n i ® k e t , m a j d e g y k é s ® b b i  

i d ® p o n t b a n ú j r a l e h e t e n g e d é l y e z n i a m ¶ k ö d é s é t . A t r i g g e r e k e n g e d é l y e z é s e é s l e t i l t á s a a z A L T E R T R I G G E R  

u t a s í t á s s a l l e h e t s é g e s .  

A t r i g g e r e k s e g í t s é g é v e l i g e n h a t é k o n y i n t e g r i t á n s e l l e n ® r z ® , n a p l ó z ó e s z k ö z t k a p t u n k a k e z ü n k b e , m e l y e t c é l s z e r ¶  

a l a p o s a n e l s a j á t i t a n i , m i v e l a j ö z ® a d a t b á z i s k e z e l ® r e n d s e r e i e g y r e n a g y o b b m é r t é k b e n f o g n a k e z e n m c h a n i z m u s r a  

t á m a s z k o d n i .  

A t r i g g e r d e n i á l á s a a t ö b b i a d a t b á z i s o b j e k t u m d e n á l á s á h o z h a s o n l ó a n a z S Q L n y e l v e n k e r e s z t ü l t ö r t é n i k . A  

f e n t i m i n t a t r i g g e r t e l j e s s z ö v e g e e g y e t l e n e g y S Q L u t a s í t á s n a k f o g m e g f e l e l n i , a m e l y e t p l . a z S Q L P l u s s e g í t s é g é v e l  

i n t e r a k t í v a n i s k i a d h a t u n k .  

6 . P L / S Q L b l o k k o k d e n á l á s a S Q L P l u s - b a n  

A z S Q L P l u s r e n d s z e r b e n e g y u t a s í t á s v é g r e h a j t á s r a k e r ü l , h a a d e n i á l ó s o r t e g y p o n t o s v e s s z ® z á r j a l e . M i v e l a  

P L / S Q L b l o k k b a n t ö b b i l y e n s o r i s l e h e t é s a b l o k k o t n e m s o r o n k é n t , h a n e m e g y ü t t k e l l e l k ü l d e n i a z R D B M S -  

h e z , e z é r t a z S Q L P l u s - b a n a n o r m á l p a r a n c s b e v i t e l i ü z e m m ó d m e l l e t t l é t e z i k e g y P L / S Q L m ó d i s , m e l y b e n t ö b b  

u t a s í t á s t t ö b b s o r o n k e r e s z t ü l i s l e í r h a t n u k , a n é l k ü l k ö z v e t l e n v é g r e h a j t á s r a k e r ü l n é n e k . A z e l k é s z ü l t b l o k k o t a  

n o r m á l ü z e m m ó d b a v i s s z a t é r v e l e h e t m a j d f u t t a t n i . 5  

A P L / S Q L m ó d r a v a l ó á t t é r é s a u t o m a t i k u s a n b e k ö v e t k e z i k , h a P l / S Q L b l o k k o t t a r t a l m a z ó S Q L u t a s í t á s b a  

k e z d ü n k b e l e . Í g y p é l d á u l a C R E A T E T R I G G E R u t a s í t á s b a n a B E G I N k u l c s s z ó u t á n a z S Q L P l u s á t t é r P L / S Q L  

m ó d r a . E b b e n a m ó d b a n m i n d e n s o r e l ® t t e g y s o r s z á m j e l e n i k m e g . A b l o k k v é g é n ( v a g y i s a z á r ó E N D ; u t á n ) , e g y  

( a z a z p o n t ) u t a s í t á s s a l t é r h e t ü n k v i s s z a a n o r m á l ü z e m m ó d b a . A n o r m á l ü z e m m ó d b a n a  

1 7 

Page 18: Oracle PL/SQL jegyzet

5/12/2018 Oracle PL/SQL jegyzet - slidepdf.com

http://slidepdf.com/reader/full/oracle-plsql-jegyzet 18/18

 

u t a s í t á s s a l h a j t h a t j u k v é g r e a l e í r t S Q L u t a s í t á s t .  

A z S Q L P l u s - b a n k ö z v e t l e n ü l i s í r h a t u n k P L / S Q L b l o k k o t , m e l y e t ü t á n a r ö g t ö n v é g r e i s h a j t h a t u n k . A P L / S Q L  

b l o k k l é t r e h o z á s á t a  

B E G I N  

u t a s í t á s s a l k e l l k e z d e n i , m e l y h a t á s á r a a r e n d s z e r á t t é r P L / S Q L ü z e m m ó d b a . O t t a z e l ® z ® e k b e n l e í r t a k a l a p j á n  

e l k é s z í t j ü k a p r o g r a m s z ö v e g é t , m a j d v i s s z a t é r ü n k a n o r m á l ü z e m m ó d b a , s o t t a z e m l í t e t t / u t a s í t á s a l f u t t a t h a t j u k  

a z e l k é s z ü l t P L / S Q L b l o k k o t .  

6 . 1 . T á r o l t e l j á r á s o k  

A t e l j e s s é g k e d v é é r t e g y k i s á t t e k i n t é s t a d u n k a t á r l o t e l j á r á s o k r ó l , f ü g g v é n y e k r ® l i s . A t á r o l t e l j á r á s o k e g y o l y a n  

P L / S Q L b l o k k o t j e l e n t e n e k , a m e l y e k e g y r é s z t p a r a m é e t e r z h e t ® k , s a j á t e g y e d i a z o n o s í t ó n e v ü k v a n é s a z a d a t b á -  

z i s b a n l e f o r d í t o t t f o r m á b a n l e t á r o l á s r a k e r ü l n e k . E m e g o l d á s n a k a z e l ® n y e , h o g y a P L / S Q L b l o k k t ö b b h e l y r ® l i s  

e l é r h e t ® , e l é g c s a k e g y s z e r d e n i á l n i , s g y o r s a b b v é g r e h a j t á s t t e s z l e h e t ® v é , m i n t a z e g y e d i l e g e l k ü l d ö t t P L / S Q L  

b l o k k .  

A e l j á r á s d e k l a r á c i ó j a  

C R E A T E P R O C E D U R E e l á r á s n é v ( p a r a m é t e r l i s t a )  

A S P L / S Q L _ b l o k k ;  

a h o l a P L / S Q L _ b l o k k a z e l j á r á s t ö r z s e , s m e g f e l e l e g y s z a b á l y o s P L / S Q L b l o k k n a k . A p a r a m é t e r l i s t a e l e m e i  

v e s z ® v e l v a n n a k e l v á l a s z t v a e g y m á s t ó l , s m i n d e n e l e m  

p a r a m é t e r n é v j e l l e g a d a t t í p u s  

h á r m a s b ó l á l l , m e l y b e n a j e l l e g a r r a u t a l , h o g y k i m e n ® v a g y b e j ö v ® p a r a m é t e r r ® l v a n - e s z ó . E n n e k m e g f e f e l ® e n a  

  j e l l e g l e h e t s l é g e s é r t é k e i :  

P a r a m é t e r J e l e n t é s  

I N b e m e n e t i  

O U T k i m e n e t i  

I N O U T m i n d k é t i r á n y b a m u t a t ó a d a t f o r g a l m a t l e b o n y o l í t ó p a r a m é t e r  

A z a d a t t í p u s a s z o k á s o s P L / S Q L a d a t t í p u s o k v a l a m e l y i k e l e h e t . A t ö r z s b e n s z e r e p l ® P L / S Q L b l o k k b a n a  

p a r a m é t e r e k u g y a n ú g y h a s z n á l h a t ó k , m i n t a n o r m á l P L / S Q L v á l t o z ó k , í g y n e m e l é j ü k k e t t ® s p o n t o t s e m t e n n i a  

h i v a t k o z á s k o r .  

A P L / S Q L b l o k k j e l l e m z ® j e , h o g y n e m k e l l b e n n e D E C L A R E k u l c s s z ó t m e g a d n i a b l o k k k e z d e t é n e k k i j e l ö l é s é r e .  

A t á r o l t f ü g g v é n y e k d e n í c i ó j a h a s o n l ó a z e l j á r á s o k d e n í c i ó j á h o z , a z z a l a k ü l ö n s b é g g e l , h o g y i t t v i s s z a t é r é s i  

é r t é k i s é r t e l m e z e t t . A v i s s z a t é r é i é r t é k t í p u s á t a p a r a m é t e r l i s t á t k ö v e t ® e n , a z á r ó j e l u t á n m e g a d o t t  

R E T U R N a d a t t í p u s  

t a g g a l j e l ö l j ü k . A v i s s z a t é r é s i é r t é k e t a R E T U R N u t a s í t á s s a l h a t á r o z z u k m e g , m i n t a z a l á b b i p l d a i s m u t a t j a . A  

p é l d a a d o t t t í p u s ú a u t ó k á t l a g á r á t h a t á r o z z a m e g .  

C R E A T E F U N C T I O N a t l a g ( t i p I N C H A R ( 2 0 ) ) R E T U R N N U M B E R  

I S 

e r t e k N U M B E R ;  

B E G I N  

S E L E C T A V G ( a r )  

I N T O e r t e k  

F R O M a u t o k  

W H E R E t í p u s L I K E t i p ;  

R E T U R N ( e r t e k ) ;  

E N D ;  

1 8