Data Definition Language (DDL) Data Manipulation Language (DML) Data Retieval Language (DRL) Tansa!tion Contol Language (TCL) Data Contol Language (DCL) DDL "" !eate# alte# dop# tun!ate# ena$e DML "" inset# update# delete DRL "" sele!t TCL "" !o$$it# oll%a!&# savepoint DCL "" gant# evo&e CR'(T' T()L' S*NT(+ Ceate ta%le ,table_name- (col1 datatype1, col2 datatype2 coln datatypen). '/0 SQL- !eate ta%le student (no nu$%e (1)# na$e va!ha (23)# $a&s nu$%e (4)). INS'RT This will %e used to inset the e!ods into ta%le5 6e have two $ethods to inset5 )7 value $ethod )7 addess $ethod a) USIN8 9(LU' M'T:OD
S7nta/0 inset into ,table_name- values (value1, value2, value3 . Valuen).
'/0 SQL- inset into student values (2# ;sudha;# 233). SQL- inset into student values (1# ;sað# 133).
Copy rights are reserved. 1 To inset a new e!od again 7ou have to t7pe entie inset !o$$and# if thee ae lot of e!ods this will %e diffi!ult5 This will %e avoided %7 using addess $ethod5 %) USIN8 (DDR'SS M'T:OD
S7nta/0 inset into ,table_name- values (&col1, &col2, &col3 . &coln). This will po$pt 7ou fo the values %ut fo eve7 inset 7ou have to use fowad slash5
'/0 SQL- inset into student values (<no# =<na$e=# <$a&s). 'nte value fo no0 2 'nte value fo na$e0 >agan 'nte value fo $a&s0 433 old 20 inset into student values(<no# =<na$e=# <$a&s) new 20 inset into student values(2# =>agan=# 433) SQL- ? 'nte value fo no0 1 'nte value fo na$e0 Naen 'nte value fo $a&s0 @33 old 20 inset into student values(<no# =<na$e=# <$a&s) new 20 inset into student values(1# =Naen=# @33) !) INS'RTIN8 D(T( INTO SA'CIBI'D COLUMNS USIN8 9(LU' M'T:OD
S7nta/0 inset into ,table_name)(col1, col2, col3 coln) values (&col1, &col2 .&coln); Copy rights are reserved. 2 This will po$pt 7ou fo the values %ut fo eve7 inset 7ou have to use fowad slash5
'/0 SQL- inset into student (no# na$e) values (<no# =<na$e=). 'nte value fo no0 C 'nte value fo na$e0 9isu old 20 inset into student (no# na$e) values(<no# =<na$e=) new 20 inset into student (no# na$e) values(C# =9isu=) SQL- ? 'nte value fo no0 D 'nte value fo na$e0 Rattu old 20 inset into student (no# na$e) values(<no# =<na$e=) new 20 inset into student (no# na$e) values(D# =Rattu=) S'L'CTIN8 D(T( S7nta/0 Sele!t E fo$ ,table_name-. "" hee E indi!ates all !olu$ns o Sele!t col1, col2, coln fo$ ,table_name-. '/0 SQL- sele!t E fo$ student.
NO N(M' M(RFS """ """""" """""""" 2 Sudha 233 1 Sað 133 2 >agan 433 1 Naen @33 4 Ra$esh @ Madhu C 9isu D Rattu SQL- sele!t no# na$e# $a&s fo$ student. NO N(M' M(RFS Copy rights are reserved. 3 """ """""" """""""" 2 Sudha 233 1 Sað 133 2 >agan 433 1 Naen @33 4 Ra$esh @ Madhu C 9isu D Rattu SQL- sele!t no# na$e fo$ student. NO N(M' """ """"""" 2 Sudha 1 Sað 2 >agan 1 Naen 4 Ra$esh @ Madhu C 9isu D Rattu CONDITION(L S'L'CTIONS (ND OA'R(TORS 6e have two !lauses used in this 6hee Ode %7 USIN8 6:'R' S7nta/0 sele!t E fo$ ,table_name- whee ,condition-.
the following ae the diffeent t7pes of opeatos used in whee !lause5 (ith$eti! opeatos Co$paison opeatos Logi!al opeatos Copy rights are reserved. 4 (ith$eti! opeatos "" highest pe!eden!e G# "# E# ? Co$paison opeatos H# IH# -# ,# -H# ,H# ,- %etween# not %etween in# not in null# not null li&e Logi!al opeatos (nd O "" lowest pe!eden!e not a) USIN8 H# -# ,# -H# ,H# IH# ,-
'/0 SQL- sele!t E fo$ student whee no H 1. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 1 Naen @33
SQL- sele!t E fo$ student whee no , 1. NO N(M' M(RFS """ """"""" """""""""" 2 Sudha 233 2 >agan 433 SQL- sele!t E fo$ student whee no - 1. NO N(M' M(RFS """ """"""" """""""""" 4 Ra$esh @ Madhu C 9isu D Rattu Copy rights are reserved. 5 SQL- sele!t E fo$ student whee no ,H 1. NO N(M' M(RFS """ """"""" """""""""" 2 Sudha 233 1 Sað 133 2 >agan 433 1 Naen @33
SQL- sele!t E fo$ student whee no -H 1. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 1 Naen @33 4 Ra$esh @ Madhu C 9isu D Rattu SQL- sele!t E fo$ student whee no IH 1. NO N(M' M(RFS """ """"""" """""""""" 2 Sudha 233 2 >agan 433 4 Ra$esh @ Madhu C 9isu D Rattu SQL- sele!t E fo$ student whee no ,- 1. NO N(M' M(RFS """ """"""" """""""""" 2 Sudha 233 2 >agan 433 4 Ra$esh Copy rights are reserved. 6 @ Madhu C 9isu D Rattu %) USIN8 (ND
This will gives the output when all the !onditions %e!o$e tue5
S7nta/0 sele!t E fo$ ,table_name- whee ,condition1- and ,condition2- and 55 ,conditionn-. '/0 SQL- sele!t E fo$ student whee no H 1 and $a&s -H 133. NO N(M' M(RFS """ """"""" """""""" 1 Sað 133 1 Naen @33 !) USIN8 OR This will gives the output when eithe of the !onditions %e!o$e tue5 S7nta/0 sele!t E fo$ ,table_name- whee ,condition1- and ,condition2- o 55 ,conditionn-. '/0 SQL- sele!t E fo$ student whee no H 1 o $a&s -H 133. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 2 >agan 433 1 Naen @33 d) USIN8 )'T6''N This will gives the output %ased on the !olu$n and its lowe %ound# uppe%ound5 Copy rights are reserved. 7 S7nta/0 sele!t E fo$ ,table_name- whee ,col- %etween ,lower bound- and ,upper bound-. '/0 SQL- sele!t E fo$ student whee $a&s %etween 133 and @33. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 2 >agan 433 1 Naen @33 e) USIN8 NOT )'T6''N This will gives the output %ased on the !olu$n whi!h values ae not in its lowe %ound# uppe%ound5 S7nta/0 sele!t E fo$ ,table_name- whee ,col- not %etween ,lower bound- and ,upper bound-. '/0 SQL- sele!t E fo$ student whee $a&s not %etween 133 and @33. NO N(M' M(RFS """ """"""" """"""""" 2 Sudha 233 f) USIN8 IN This will gives the output %ased on the !olu$n and its list of values spe!ified5 S7nta/0 sele!t E fo$ ,table_name- whee ,col- in ( value1, value2, value3 valuen). '/0 SQL- sele!t E fo$ student whee no in (2# 1# 4). NO N(M' M(RFS Copy rights are reserved. 8 """ """"""" """"""""" 2 Sudha 233 1 Sað 133 2 >agan 433 1 Naen @33 4 Ra$esh g) USIN8 NOT IN This will gives the output %ased on the !olu$n whi!h values ae not in the list of values spe!ified5 S7nta/0 sele!t E fo$ ,table_name- whee ,col- not in ( value1, value2, value3 valuen). '/0 SQL- sele!t E fo$ student whee no not in (2# 1# 4). NO N(M' M(RFS """ """"""" """"""""" @ Madhu C 9isu D Rattu h) USIN8 NULL This will gives the output %ased on the null values in the spe!ified !olu$n5 S7nta/0 sele!t E fo$ ,table_name- whee ,col- is null. '/0 SQL- sele!t E fo$ student whee $a&s is null. NO N(M' M(RFS """ """"""" """"""""" 4 Ra$esh @ Madhu C 9isu Copy rights are reserved. 9 D Rattu i) USIN8 NOT NULL This will gives the output %ased on the not null values in the spe!ified !olu$n5 S7nta/0 sele!t E fo$ ,table_name- whee ,col- is not null. '/0 SQL- sele!t E fo$ student whee $a&s is not null. NO N(M' M(RFS """ """"""" """"""""" 2 Sudha 233 1 Sað 133 2 >agan 433 1 Naen @33 J) USIN8 LIF' This will %e used to sea!h though the ows of data%ase !olu$n %ased on the patten 7ou spe!if75 S7nta/0 sele!t E fo$ ,table_name- whee ,col- li&e ,pattern-.
'/0 i) This will give the ows whose $a&s ae 2335 SQL- sele!t E fo$ student whee $a&s li&e 233. NO N(M' M(RFS """ """"""" """"""""" 2 Sudha 233 ii) This will give the ows whose na$e stat with KS;5 SQL- sele!t E fo$ student whee na$e li&e =SL=. NO N(M' M(RFS Copy rights are reserved. 10 """ """"""" """"""""" 2 Sudha 233 1 Sað 133 iii) This will give the ows whose na$e ends with Kh;5 SQL- sele!t E fo$ student whee na$e li&e =Lh=.
NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 4 Ra$esh i9) This will give the ows whose na$e;s se!ond lette stat with Ka;5 SQL- sele!t E fo$ student whee na$e li&e =MaL=. NO N(M' M(RFS """ """"""" """""""" 1 Sað 133 2 >agan 433 1 Naen @33 4 Ra$esh @ Madhu D Rattu
9) This will give the ows whose na$e;s thid lette stat with Kd;5 SQL- sele!t E fo$ student whee na$e li&e =MMdL=. NO N(M' M(RFS """ """"""" """"""""" 2 Sudha 233 @ Madhu 9i) This will give the ows whose na$e;s se!ond lette stat with Kt; fo$ ending5 SQL- sele!t E fo$ student whee na$e li&e =LMtL=. Copy rights are reserved. 11 NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 D Rattu
9ii) This will give the ows whose na$e;s thid lette stat with Ke; fo$ ending5 SQL- sele!t E fo$ student whee na$e li&e =LeMML=. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 4 Ra$esh 9iii) This will give the ows whose na$e !otains 1 a;s5 SQL- sele!t E fo$ student whee na$e li&e =LaL a L=. NO N(M' M(RFS """ """"""" """""""""" 2 >agan 433 E *ou have to spe!if7 the pattens in lie using undes!oe ( M )5 USIN8 ORD'R )* This will %e used to odeing the !olu$ns data (as!ending o des!ending)5 S7nta/0 Sele!t E fo$ ,table_name- ode %7 ,col- des!. )7 default oa!le will use as!ending ode5 If 7ou want output in des!ending ode 7ou have to use de!c &e7wod afte the !olu$n5 '/0 SQL- sele!t E fo$ student ode %7 no. NO N(M' M(RFS Copy rights are reserved. 12 """ """"""" """"""""" 2 Sudha 233 2 >agan 433 1 Sað 133 1 Naen @33 4 Ra$esh @ Madhu C 9isu D Rattu SQL- sele!t E fo$ student ode %7 no des!. NO N(M' M(RFS """ """"""" """"""""" D Rattu C 9isu @ Madhu 4 Ra$esh 1 Sað 133 1 Naen @33 2 Sudha 233 2 >agan 433 USIN8 DML USIN8 UAD(T' This !an %e used to $odif7 the ta%le data5 S7nta/0 Update ,table_name- set ,col1- H value2# ,col2- H value1 whee ,condition-. '/0 SQL- update student set $a&s H C33. If 7ou ae not spe!if7ing an7 !ondition this will update entie ta%le5 SQL- update student set $a&s H C33 whee no H 1. SQL- update student set $a&s H C33# na$e H =9enu= whee no H 2. USIN8 D'L'T' Copy rights are reserved. 13 This !an %e used to delete the ta%le data te$poail75 S7nta/0 Delete ,table_name- whee ,condition-. '/0 SQL- delete student. If 7ou ae not spe!if7ing an7 !ondition this will delete entie ta%le5 SQL- delete student whee no H 1. USIN8 DDL USIN8 (LT'R This !an %e used to add o e$ove !olu$ns and to $odif7 the pe!ision of the datat7pe5 a) (DDIN8 COLUMN S7nta/0 alte ta%le ,table_name- add ,col datatype-. '/0 SQL- alte ta%le student add sdo% date. %) R'MO9IN8 COLUMN S7nta/0 alte ta%le ,table_name- dop ,col datatype-. '/0 SQL- alte ta%le student dop !olu$n sdo%. Copy rights are reserved. 14 !) INCR'(SIN8 OR D'CR'(SIN8 AR'CISION OB ( COLUMN S7nta/0 alte ta%le ,table_name- $odif7 ,col datatype-. '/0 SQL- alte ta%le student $odif7 $a&s nu$%e(C). E To de!ease pe!ision the !olu$n should %e e$pt75 d) M(FIN8 COLUMN UNUS'D S7nta/0 alte ta%le ,table_name- set unused !olu$n ,col-. '/0 SQL- alte ta%le student set unused !olu$n $a&s.
'ven though the !olu$n is unused still it will o!!up7 $e$o75 d) DROAAIN8 UNUS'D COLUMNS S7nta/0 alte ta%le ,table_name- dop unused !olu$ns. '/0 SQL- alte ta%le student dop unused !olu$ns. E *ou !an not dop individual unused !olu$ns of a ta%le5 e) R'N(MIN8 COLUMN S7nta/0 alte ta%le ,table_name- ena$e !olu$n ,old_col_name- to ,new_col_name-. '/0 SQL- alte ta%le student ena$e !olu$n $a&s to s$a&s. USIN8 TRUNC(T' This !an %e used to delete the entie ta%le data pe$anentl75 S7nta/0 Copy rights are reserved. 15 tun!ate ta%le ,table_name-. '/0 SQL- tun!ate ta%le student. USIN8 DROA This will %e used to dop the data%ase o%Je!t. S7nta/0 Dop ta%le ,table_name-. '/0 SQL- dop ta%le student. USIN8 R'N(M' This will %e used to ena$e the data%ase o%Je!t. S7nta/0 ena$e ,oldMtable_name- to ,new_table_name-. '/0 SQL- ena$e student to stud. Copy rights are reserved. 16 USIN8 TCL USIN8 COMMIT This will %e used to save the wo&5 Co$$it is of two t7pes5 I$pli!it '/pli!it a) IMALICIT This will %e issued %7 oa!le intenall7 in two situations5 6hen an7 DDL opeation is pefo$ed5 6hen 7ou ae e/iting fo$ SQL E ALUS5 %) '+ALICIT This will %e issued %7 the use5 S7nta/0 Co$$it o !o$$it wo&. E 6hen eve 7ou !o$$itted then the tansa!tion was !o$pleted5 USIN8 ROLL)(CF This will undo the opeation5 This will %e applied in two $ethods5 Upto pevious !o$$it Upto pevious oll%a!& S7nta/0 Roll o oll wo&. O Roll%a!& o oll%a!& wo&. Copy rights are reserved. 17 E 6hile po!ess is going on# if suddenl7 powe goes then oa!le will oll%a!& the tansa!tion5 USIN8 S(9'AOINT *ou !an use savepoints to oll%a!& potions of 7ou !uent set of tansa!tions5 S7nta/0 Savepoint ,!avepoint_name-. '/0 SQL- savepoint s2. SQL- inset into student values(2# Ka;# 233). SQL- savepoint s1. SQL- inset into student values(1# K%;# 133). SQL- savepoint s4. SQL- inset into student values(4# K!;# 433). SQL- savepoint s@. SQL- inset into student values(@# Kd;# @33).
)efoe oll%a!& SQL- sele!t E fo$ student. NO N(M' M(RFS """ """"""" """""""""" 2 a 233 1 % 133 4 ! 433 @ d @33
SQL- oll%a!& to savepoint s4. O SQL- oll%a!& to s4.
This will oll%a!& last two e!ods5 SQL- sele!t E fo$ student. NO N(M' M(RFS """ """"""" """""""""" Copy rights are reserved. 18 2 a 233 1 % 133 USIN8 DCL DCL !o$$ands ae used to ganting and evo&ing the pe$issions5 USIN8 8R(NT This is used to gant the pivileges to othe uses5 S7nta/0 Copy rights are reserved. 19 8ant ,privile"e!- on ,ob#ect_name- to ,u!er_name- Nwith gant optionO. '/0 SQL- gant sele!t on student to sudha. "" 7ou !an give individual pivilege SQL- gant sele!t# inset on student to sudha. "" 7ou !an give set of pivileges SQL- gant all on student to sudha. "" 7ou !an give all pivileges
The sudha use has to use dot $ethod to a!!ess the o%Je!t5 SQL- sele!t E fo$ sað5student. The sudha use !an not gant pe$ission on student ta%le to othe uses5 To get this t7pe of option use the following5 SQL- gant all on student to sudha with gant option. Now sudha use also gant pe$issions on student ta%le5 USIN8 R'9OF' This is used to evo&e the pivileges fo$ the uses to whi!h 7ou ganted the pivileges5 S7nta/0 Revo&e ,privile"e!- on ,ob#ect_name- fo$ ,u!er_name-. '/0 SQL- evo&e sele!t on student fo$ sudha. "" 7ou !an evo&e individual pivilege SQL- evo&e sele!t# inset on student fo$ sudha. "" 7ou !an evo&e set of pivileges SQL- evo&e all on student fo$ sudha. "" 7ou !an evo&e all pivileges
USIN8 (LI(S'S CR'(T' 6IT: S'L'CT 6e !an !eate a ta%le using e/isting ta%le Nalong with dataO5 S7nta/0 Ceate ta%le ,new_table_name- Ncol1, col2, col3 ... colnO as sele!t E fo$ ,old_table_name-. '/0 SQL- !eate ta%le student2 as sele!t E fo$ student.
Ceating ta%le with 7ou own !olu$n na$es5 Copy rights are reserved. 20 SQL- !eate ta%le student1(sno# sna$e# s$a&s) as sele!t E fo$ student.
Ceating ta%le with spe!ified !olu$ns5 SQL- !eate ta%le student4 as sele!t no#na$e fo$ student.
Ceating ta%le with out ta%le data5 SQL- !eate ta%le student1(sno# sna$e# s$a&s) as sele!t E fo$ student whee 2 H 1. In the a%ove whee !lause give an7 !ondition whi!h does not satisf75
INS'RT 6IT: S'L'CT Using this we !an inset e/isting ta%le data to a anothe ta%le in a single tip5 )ut the ta%le stu!tue should %e sa$e5 S7nta/0 Inset into ,table1- sele!t E fo$ ,table2-. '/0 SQL- inset into student2 sele!t E fo$ student. Inseting data into spe!ified !olu$ns SQL- inset into student2(no# na$e) sele!t no# na$e fo$ student. COLUMN (LI(S'S S7nta/0 $elect %or"inal_col& %alia!_name& 'rom %tableMna$e-. '/0 SQL- sele!t no sno fo$ student. o SQL- sele!t no PsnoQ fo$ student. T()L' (LI(S'S If 7ou ae using ta%le aliases 7ou !an use dot $ethod to the !olu$ns5 S7nta/0 Sele!t ,alia!_name-5,col1-# ,alia!_name-5,col2- R ,alia!_name-5,coln- fo$ Copy rights are reserved. 21 ,table_name- ,alia!_name-. '/0 SQL- sele!t s5no# s5na$e fo$ student s. USIN8 M'R8' M'R8' *ou !an use $ege !o$$and to pefo$ inset and update in a single !o$$and5 '/0 SQL- Mege into student2 s2 Using (sele!t EBo$ student1) s1 On(s25noHs15no) 6hen $at!hed then Update set $a&s H s15$a&s 6hen not $at!hed then Inset (s25no#s25na$e#s25$a&s) 9alues(s15no#s15na$e#s15$a&s). In the a%ove the two ta%les ae with the sa$e stu!tue %ut we !an $ege diffeent stu!tued ta%les also %ut the datat7pe of the !olu$ns should $at!h5 (ssu$e that student2 has !olu$ns li&e no#na$e#$a&s and student1 has !olu$ns li&e no# Copy rights are reserved. 22 na$e# hno# !it75 SQL- Mege into student2 s2 Using (sele!t EBo$ student1) s1 On(s25noHs15no) 6hen $at!hed then Update set $a&s H s15hno 6hen not $at!hed then Inset (s25no#s25na$e#s25$a&s) 9alues(s15no#s15na$e#s15hno). MULTI)L' INS'RTS 6e have ta%le !alled D'AT with the following !olu$ns and data D'ATNO DN(M' LOC """""""" """""""" """" 23 a!!ounting new 7o& 13 esea!h dallas 43 sales Chi!ago @3 opeations %oston a) CR'(T' STUD'NT T()L' SQL- Ceate ta%le student(no nu$%e(1)#na$e va!ha(1)#$a&s nu$%e(4)). %) MULTI INS'RT 6IT: (LL BI'LDS SQL- Inset all Into student values(2#;a;#233) Into student values(1#;%;#133) Into student values(4#;!;#433) Sele!t Efo$ dept whee deptnoH23. "" This insets 4 ows Copy rights are reserved. 23 !) MULTI INS'RT 6IT: SA'CIBI'D BI'LDS SQL- inset all Into student (no#na$e) values(@#;d;) Into student(na$e#$a&s) values(;e;#@33) Into student values(4#;!;#433) Sele!t Efo$ dept whee deptnoH23. "" This insets 4 ows d) MULTI INS'RT 6IT: DUALIC(T' RO6S SQL- inset all Into student values(2#;a;#233) Into student values(1#;%;#133) Into student values(4#;!;#433) Sele!t Efo$ dept whee deptno - 23. "" This insets S ows %e!ause in the sele!t state$ent etieves 4 e!ods (4 insets fo ea!h ow etieved) e) MULTI INS'RT 6IT: CONDITIONS )(S'D SQL- Inset all 6hen deptno - 23 then Into student2 values(2#;a;#233) 6hen dna$e H KS(L'S; then Into student1 values(1#;%;#133) 6hen lo! H KN'6 *ORF; then Into student4 values(4#;!;#433) Sele!t Efo$ dept whee deptno-23. "" This insets @ ows %e!ause the fist !ondition satisfied 4 ti$es# se!ond !ondition satisfied on!e and the last none5 f) MULTI INS'RT 6IT: CONDITIONS )(S'D (ND 'LS' SQL- Inset all 6hen deptno - 233 then Copy rights are reserved. 24 Into student2 values(2#;a;#233) 6hen dna$e H KS; then Into student1 values(1#;%;#133) 6hen lo! H KN'6 *ORF; then Into student4 values(4#;!;#433) 'lse Into student values(@#;d;#@33) Sele!t Efo$ dept whee deptno-23. "" This insets 4 e!ods %e!ause the else satisfied 4 ti$es g) MULTI INS'RT 6IT: CONDITIONS )(S'D (ND BIRST SQL- Inset fist 6hen deptno H 13 then Into student2 values(2#;a;#233) 6hen dna$e H KR'S'(RC:; then Into student1 values(1#;%;#133) 6hen lo! H KN'6 *ORF; then Into student4 values(4#;!;#433) Sele!t Efo$ dept whee deptnoH13.
"" This insets 2 e!od %e!ause the fist !lause avoid to !he!& the e$aining !onditions on!e the !ondition is satisfied5 h) MULTI INS'RT 6IT: CONDITIONS )(S'D# BIRST (ND 'LS' SQL- Inset fist 6hen deptno H 43 then Into student2 values(2#;a;#233) 6hen dna$e H KR; then Into student1 values(1#;%;#133) 6hen lo! H KN'6 *ORF; then Into student4 values(4#;!;#433) 'lse Into student values(@#;d;#@33) Sele!t Efo$ dept whee deptnoH13. "" This insets 2 e!od %e!ause the else !lause satisfied on!e Copy rights are reserved. 25 i) MULTI INS'RT 6IT: MULTI)L' T()L'S SQL- Inset all Into student2 values(2#;a;#233) Into student1 values(1#;%;#133) Into student4 values(4#;!;#433) Sele!t Efo$ dept whee deptnoH23. "" This insets 4 ows EE *ou !an use $ulti ta%les with spe!ified fields# with dupli!ate ows# with !onditions# with fist and else !lauses5 BUNCTIONS Copy rights are reserved. 26 Bun!tions !an %e !ategoiTed as follows5 Single ow fun!tions 8oup fun!tions SIN8L' RO6 BUNCTIONS Single ow fun!tions !an %e !ategoiTed into five5 These will %e applied fo ea!h ow and podu!es individual output fo ea!h ow5 Nu$ei! fun!tions Sting fun!tions Date fun!tions Mis!ellaneous fun!tions Convesion fun!tions NUM'RIC BUNCTIONS (%s Sign SUt Mod Nvl Aowe '/p Ln Log Ceil Bloo Round Tun& )itand 8eatest Least Coales!e a) ()S (%solute value is the $easue of the $agnitude of value5 (%solute value is alwa7s a positive nu$%e5 Copy rights are reserved. 27 S7nta/0 a%s (value) '/0 SQL- sele!t a%s(C)# a%s("C)# a%s(3)# a%s(null) fo$ dual. ()S(C) ()S("C) ()S(3) ()S(NULL) """""""""" """""""""" """""""""" """"""""""""" C "C 3 %) SI8N Sign gives the sign of a value5 S7nta/0 sign (value) '/0 SQL- sele!t sign(C)# sign("C)# sign(3)# sign(null) fo$ dual. SI8N(C) SI8N("C) SI8N(3) SI8N(NULL) """""""""" """""""""" """""""""" """""""""""""" 2 "2 3 !) SQRT This will give the sUuae oot of the given value5 S7nta/0 sUt (value) "" hee value $ust %e positive5 '/0 SQL- sele!t sUt(@)# sUt(3)# sUt(null)# sUt(2) fo$ dual. SQRT(@) SQRT(3) SQRT(NULL) SQRT(2) """""""""" """""""""" """"""""""""""" """""""""" 1 3 2 d) MOD This will give the e$ainde5 S7nta/0 $od (value, divi!or) Copy rights are reserved. 28 '/0 SQL- sele!t $od(V#@)# $od(2#C)# $od(null#null)# $od(3#3)# $od("V#@) fo$ dual. MOD(V#@) MOD(2#C) MOD(NULL#NULL) MOD(3#3) MOD("V#@) """""""""""" """""""""" """"""""""""""""""""" """"""""""" """"""""""""" 4 2 3 "4 e) N9L This will su%stitutes the spe!ified value in the pla!e of null values5 S7nta/0 nvl (null_col, replacement_value) '/0 SQL- sele!t E fo$ student. "" hee fo 4 d ow $a&s value is null NO N(M' M(RFS """ """"""" """"""""" 2 a 233 1 % 133 4 ! SQL- sele!t no# na$e# nvl($a&s#433) fo$ student. NO N(M' N9L(M(RFS#433) """ """"""" """"""""""""""""""""" 2 a 233 1 % 133 4 ! 433 SQL- sele!t nvl(2#1)# nvl(1#4)# nvl(@#4)# nvl(C#@) fo$ dual. N9L(2#1) N9L(1#4) N9L(@#4) N9L(C#@) """""""""" """""""""" """""""""" """""""""" 2 1 @ C SQL- sele!t nvl(3#3)# nvl(2#2)# nvl(null#null)# nvl(@#@) fo$ dual.
Copy rights are reserved. 29 N9L(3#3) N9L(2#2) N9L(null#null) N9L(@#@) """""""""" """""""""" """"""""""""""""" """""""""" 3 2 @ f) AO6'R Aowe is the a%ilit7 to aise a value to a given e/ponent5 S7nta/0 powe (value, e(ponent) '/0 SQL- sele!t powe(1#C)# powe(3#3)# powe(2#2)# powe(null#null)# powe(1#"C) fo$ dual.
AO6'R(1#C) AO6'R(3#3) AO6'R(2#2) AO6'R(NULL#NULL) AO6'R(1#"C) """""""""""""" """""""""""""" """"" """"""""" """"""""""""""""""""""" """"""""""""""" 41 2 2 53421C g) '+A This will aise e value to the give powe5 S7nta/0 e/p (value) '/0 SQL- sele!t e/p(2)# e/p(1)# e/p(3)# e/p(null)# e/p("1) fo$ dual. '+A(2) '+A(1) '+A(3) '+A(NULL) '+A("1) """""""" """"""""" """""""" """"""""""""" """""""""" 15V2W1W2W4 V54WS3CD2 2 524C44C1W4 h) LN This is %ased on natual o %ase e logaith$5 S7nta/0 ln (value) "" hee value $ust %e geate than Teo whi!h is positive onl75 '/0 SQL- sele!t ln(2)# ln(1)# ln(null) fo$ dual. Copy rights are reserved. 30 LN(2) LN(1) LN(NULL) """"""" """"""" """""""""""" 3 5DS42@V2W2 Ln and '/p ae e!ipo!al to ea!h othe5 '+A (4) H 1353WCC4DS LN (1353WCC4DS) H 4 i) LO8 This is %ased on 23 %ased logaith$5 S7nta/0 log (23# value)"" hee value $ust %e geate than Teo whi!h is positive onl75 '/0 SQL- sele!t log(23#233)# log(23#1)# log(23#2)# log(23#null) fo$ dual. LO8(23#233) LO8(23#1) LO8(23#2) LO8(23#NULL) """"""""""""""" """"""""""" """""""""""" """"""""""""""""" 1 543231SSSD 3 LN (value) H LO8 ('+A(2)# value) SQL- sele!t ln(4)# log(e/p(2)#4) fo$ dual. LN(4) LO8('+A(2)#4) """"""" """"""""""""""""" 253SWD211S 253SWD211S J) C'IL This will podu!e a whole nu$%e that is geate than o eUual to the spe!ified value5 S7nta/0 !eil (value) '/0 SQL- sele!t !eil(C)# !eil(C52)# !eil("C)# !eil( "C52)# !eil(3)# !eil(null) fo$ dual. C'IL(C) C'IL(C52) C'IL("C) C'IL("C52) C'IL(3) C'IL(NULL) Copy rights are reserved. 31 """"""""" """"""""""" """""""""" """""""""""" """""""" """""""""""""" C D "C "C 3 &) BLOOR This will podu!e a whole nu$%e that is less than o eUual to the spe!ified value5 S7nta/0 floo (value) '/0 SQL- sele!t floo(C)# floo(C52)# floo("C)# floo( "C52)# floo(3)# floo(null) fo$ dual. BLOOR(C) BLOOR(C52) BLOOR("C) BLOOR("C52) BLOOR(3) BLOOR(NULL) """"""""""" """"""""""""" """""""""""" """""""""""""" """"""""""" """""""""""""""" C C "C "D 3 l) ROUND This will ounds nu$%es to a given nu$%e of digits of pe!ision5 S7nta/0 ound (value, preci!ion) '/0 SQL- sele!t ound(214514@C)# ound(214514@C#1)# ound(214514C@#1) fo$ dual. ROUND(214514@C) ROUND(214514@C#3) ROUND(214514@C#1) ROUND(214514C@#1) """"""""""""""""""""" """""""""""""""""""""""" """"""""""""""""""""""" """"""""""""""""""""""" 214 214 214514 21451@ SQL- sele!t ound(214514@C#"2)# ound(214514@C#"1)# ound(214514@C#"4)# ound(214514@C#"@) fo$ dual.
$) TRUNC This will tun!ates o !hops off digits of pe!ision fo$ a nu$%e5 S7nta/0 tun! (value, preci!ion) '/0 SQL- sele!t tun!(214514@C)# tun!(214514@C#1)# tun!(214514C@#1) fo$ dual. TRUNC(214514@C) TRUNC(214514@C#1) TRUNC(214514C@#1) """"""""""""""""""""" """"""""""""""""""""""" """"""""""""""""""""""" 214 214514 214514 SQL- sele!t tun!(214514@C#"2)# tun!(214514@C#"1)# tun!(214514@C#"4)# tun!(214514@C#"@) fo$ dual. TRUNC(214514@C#"2) TRUNC(214514@C#"1) TRUNC(214514@C#"4) TRUNC(214514@C#"@) Copy rights are reserved. 33 """""""""""""""""""""""" """""""""""""""""""""""" """"""""""""""""""""""" """""""""""""""""""""""" 213 233 3 3 SQL- sele!t tun!(214#3)# tun!(214#2)# tun!(214#1) fo$ dual. TRUNC(214#3) TRUNC(214#2) TRUNC(214#1) """""""""""""""" """""""""""""""" """"""""""""""""" 214 214 214 SQL- sele!t tun!("214#3)# tun!("214#2)# tun!("214#1) fo$ dual. TRUNC("214#3) TRUNC("214#2) TRUNC("214#1) """"""""""""""""" """"""""""""""""" """"""""""""""""" "214 "214 "214 SQL- sele!t tun!(214#"2)# tun!(214#"1)# tun!(214#"4)# tun!("214#"2)# tun!( "214#1)# tun!("214#"4) fo$ dual. TRUNC(214#"2) TRUNC(214#"1) TRUNC(214#"4) TRUNC("214#"2) TRUNC("214#1) TRUNC(" 214#"4) """"""""""""" """"""""""""" """"""""""""" """""""""""""" """"""""""""" """"""""""""""""""""""""""""""""" 213 233 3 "213 "214 3 SQL- sele!t tun!(null#null)# tun!(3#3)# tun!(2#2)# tun!("2#"2)# tun!("1#"1) fo$ dual. TRUNC(NULL#NULL) TRUNC(3#3) TRUNC(2#2) TRUNC("2#"2) TRUNC("1#"1) """"""""""""""""""""""" """"""""""""" """"""""""""" """"""""""""""" """""""""""""""" 3 2 3 3 n) )IT(ND This will pefo$ %itwise and opeation5 S7nta/0 %itand (value1, value2) '/0 Copy rights are reserved. 34 SQL- sele!t %itand(1#4)# %itand(3#3)# %itand(2#2)# %itand(null#null)# %itand("1#"4) fo$ dual. )IT(ND(1#4) )IT(ND(3#3) )IT(ND(2#2) )IT(ND(NULL#NULL) )IT(ND("1#"4) """""""""""""" """"""""""""""" """""""""""""" """""""""""""""""""""""" """"""""""""""""" 1 3 2 "@ o) 8R'(T'ST This will give the geatest nu$%e5 S7nta/0 geatest (value1, value2, value3 valuen) '/0 SQL- sele!t geatest(2# 1# 4)# geatest("2# "1# "4) fo$ dual. 8R'(T'ST(2#1#4) 8R'(T'ST("2#"1#"4) """""""""""""""""""" """"""""""""""""""""""" 4 "2 If all the values ae Teos then it will displa7 Teo5 If all the paa$etes ae nulls then it will displa7 nothing5 If an7 of the paa$etes is null it will displa7 nothing5 p) L'(ST This will give the least nu$%e5 S7nta/0 least (value1, value2, value3 valuen) '/0 SQL- sele!t least(2# 1# 4)# least("2# "1# "4) fo$ dual. L'(ST(2#1#4) L'(ST("2#"1#"4) """""""""""""""""""" """"""""""""""""""""""" 2 "4 If all the values ae Teos then it will displa7 Teo5 If all the paa$etes ae nulls then it will displa7 nothing5 If an7 of the paa$etes is null it will displa7 nothing5 U) CO(L'SC' Copy rights are reserved. 35 This will etun fist non"null value5 S7nta/0 !oales!e (value1, value2, value3 valuen) '/0 SQL- sele!t !oales!e(2#1#4)# !oales!e(null#1#null#C) fo$ dual. CO(L'SC'(2#1#4) CO(L'SC'(NULL#1#NULL#C) """"""""""""""""""" """"""""""""""""""""""""""""""" 2 1 STRIN8 BUNCTIONS Init!ap Uppe Lowe Length Rpad Lpad Lti$ Rti$ Ti$ Tanslate Repla!e Sounde/ Con!at ( K XX K Con!atenation opeato) (s!ii Ch Su%st Inst De!ode 8eatest Least Coales!e a) INITC(A This will !apitaliTe the initial lette of the sting5 S7nta/0 init!ap (!trin") Copy rights are reserved. 36 '/0 SQL- sele!t init!ap(=!o$pute=) fo$ dual. INITC(A """"""""""" Co$pute %) UAA'R This will !onvet the sting into uppe!ase5 S7nta/0 uppe (!trin") '/0 SQL- sele!t uppe(=!o$pute=) fo$ dual. UAA'R """"""""""" COMAUT'R !) LO6'R This will !onvet the sting into lowe!ase5 S7nta/0 lowe (!trin") '/0 SQL- sele!t lowe(=COMAUT'R=) fo$ dual. LO6'R """"""""""" !o$pute d) L'N8T: This will give length of the sting5 S7nta/0 length (!trin") Copy rights are reserved. 37 '/0 SQL- sele!t length(=!o$pute=) fo$ dual. L'N8T: """"""""""" W e) RA(D This will allows 7ou to pad the ight side of a !olu$n with an7 set of !haa!tes5 S7nta/0 pad (!trin", len"t) *, paddin"_c)ar+) '/0 SQL- sele!t pad(=!o$pute=#2C#=E=)# pad(=!o$pute=#2C#=EY=) fo$ dual. RA(D(=COMAUT'R= RA(D(=COMAUT'R= """""""""""""""""""""" """""""""""""""""""""" !o$puteEEEEEEE !o$puteEYEYEYE "" Default padding !haa!te was %lan& spa!e5 f) LA(D This will allows 7ou to pad the left side of a !olu$n with an7 set of !haa!tes5 S7nta/0 lpad (!trin", len"t) *, paddin"_c)ar+) '/0 SQL- sele!t lpad(=!o$pute=#2C#=E=)# lpad(=!o$pute=#2C#=EY=) fo$ dual. LA(D(=COMAUT'R= LA(D(=COMAUT'R= """"""""""""""""""""" """"""""""""""""""""" EEEEEEE!o$pute EYEYEYE!o$pute "" Default padding !haa!te was %lan& spa!e5 g) LTRIM Copy rights are reserved. 38 This will ti$ off unwanted !haa!tes fo$ the left end of sting5 S7nta/0 lti$ (!trin" *,unwanted_c)ar!+) '/0 SQL- sele!t lti$(=!o$pute=#=!o=)# lti$(=!o$pute=#=!o$=) fo$ dual. LTRIM( LTRIM """""""" """"""""" $pute pute SQL- sele!t lti$(=!o$pute=#=pute=)# lti$(=!o$pute=#=o$pute=) fo$ dual. LTRIM(=C LTRIM(=C """""""""" """""""""" !o$pute !o$pute
"" If 7ou haven;t spe!if7 an7 unwanted !haa!tes it will displa7 entie sting5 h) RTRIM This will ti$ off unwanted !haa!tes fo$ the ight end of sting5 S7nta/0 ti$ (!trin" *, unwanted_c)ar!+) '/0 SQL- sele!t ti$(=!o$pute=#=e=)# ti$(=!o$pute=#=te=) fo$ dual. RTRIM( RTRIM """""""" """"""""" !o$put !o$pu SQL- sele!t ti$(=!o$pute=#=!o$put;)# ti$(=!o$pute=#=!o$pute=) fo$ dual. RTRIM(=C RTRIM(=C """""""""" """""""""" !o$pute !o$pute "" If 7ou haven;t spe!if7 an7 unwanted !haa!tes it will displa7 entie sting5 i) TRIM Copy rights are reserved. 39 This will ti$ off unwanted !haa!tes fo$ the %oth sides of sting5 S7nta/0 ti$ (unwanted_c)ar! fo$ !trin") '/0 SQL- sele!t ti$( =i= fo$ =indiani=) fo$ dual. TRIM( """"" ndian
SQL- sele!t ti$( leading=i= fo$ =indiani=) fo$ dual. "" this will wo& as LTRIM TRIM(L """""" ndiani SQL- sele!t ti$( tailing=i= fo$ =indiani=) fo$ dual. "" this will wo& as RTRIM TRIM(T """""" Indian J) TR(NSL(T' This will epla!e the set of !haa!tes# !haa!te %7 !haa!te5 S7nta/0 tanslate (!trin", old_c)ar!, new_c)ar!) '/0 SQL- sele!t tanslate(=india=#=in=#=/7=) fo$ dual. TR(NS """""""" /7d/a &) R'AL(C' This will epla!e the set of !haa!tes# sting %7 sting5 Copy rights are reserved. 40 S7nta/0 epla!e (!trin", old_c)ar! *, new_c)ar!+) '/0 SQL- sele!t epla!e(=india=#=in=#=/7=)# epla!e(Kindia;#;in;) fo$ dual. R'AL(C' R'AL(C' """"""""""" """"""""""" +7dia dia l) SOUND'+ This will %e used to find wods that sound li&e othe wods# e/!lusivel7 used in whee !lause5 S7nta/0 sounde/ (!trin") '/0 SQL- sele!t E fo$ e$p whee sounde/(ena$e) H sounde/(=SMIT=). 'MANO 'N(M' >O) M8R :IR'D(T' S(L D'ATNO """""""" """""""" """"" """"" """""""""""" """"""""" """""""""" V4DS SMIT: CL'RF VS31 2V"D'C"W3 C33 13 $) CONC(T This will %e used to !o$%ine two stings onl75 S7nta/0 !on!at (!trin"1, !trin"2) '/0 SQL- sele!t !on!at(=!o$pute=#= opeato=) fo$ dual. CONC(T(=COMAUT'R= """"""""""""""""""""""""" !o$pute opeato If 7ou want to !o$%ine $oe than two stings 7ou have to use !on!atenation opeato(XX)5 Copy rights are reserved. 41 SQL- sele!t =how= XX = ae= XX = 7ou= fo$ dual. =:O6=XX=(R' """"""""""""""" how ae 7ou n) (SCII This will etun the de!i$al epesentation in the data%ase !haa!te set of the fist !haa!te of the sting5 S7nta/0 as!ii (!trin") '/0 SQL- sele!t as!ii(=a=)# as!ii(=apple=) fo$ dual. (SCII(=(=) (SCII(=(AAL'=) """""""""""" """""""""""""""""" SV SV o) C:R This will etun the !haa!te having the %ina7 eUuivalent to the sting in eithe the data%ase !haa!te set o the national !haa!te set5 S7nta/0 !h (number) '/0 SQL- sele!t !h(SV) fo$ dual. C:R """"" a p) SU)STR This will %e used to e/ta!t su%stings5 S7nta/0 su%st (!trin", !tart_c)r_count *, no_o'_c)ar!+) Copy rights are reserved. 42 '/0 SQL- sele!t su%st(=!o$pute=#1)# su%st(=!o$pute=#1#C)# su%st(=!o$pute=#4#V) fo$ dual. SU)STR( SU)ST SU)STR """""""""" """"""" """""""" o$pute o$put $pute If no_o'_c)ar! paa$ete is negative then it will displa7 nothing5 If %oth paa$etes e/!ept !trin" ae null o Teos then it will displa7 nothing5 If no_o'_c)ar! paa$ete is geate than the length of the sting then it ignoes and !al!ulates %ased on the oginal sting length5 If !tart_c)r_count is negative then it will e/ta!t the su%sting fo$ ight end5 2 1 4 @ C D V W C O M A U T ' R "W "V "D "C "@ "4 "1 "2 U) INSTR This will allows 7ou fo sea!hing though a sting fo set of !haa!tes5 S7nta/0 inst (!trin", !earc)_!tr *, !tart_c)r_count *, occurrence+ +) '/0 SQL- sele!t inst(=info$ation=#=o=#@#2)# inst(=info$ation=#=o=#@#1) fo$ dual. INSTR(=INBORM(TION=#=O=#@#2) INSTR(=INBORM(TION=#=O=#@#1) """""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""" @ 23 If 7ou ae not spe!if7ing !tart_c)r_count and occurrence then it will stat sea!h fo$ the %eginning and finds fist o!!uen!e onl75 If %oth paa$etes !tart_c)r_count and occurrence ae null# it will displa7 nothing5 ) D'COD' Copy rights are reserved. 43 De!ode will a!t as value %7 value su%stitution5 Bo eve7 value of field# it will !he!&s fo a $at!h in a seies of if?then tests5 S7nta/0 de!ode (value, i'1, t)en1, i'2, t)en2, . el!e). '/0 SQL- sele!t sal# de!ode(sal#C33#=Low=#C333#=:igh=#=Mediu$=) fo$ e$p. S(L D'COD' """"" """"""""" C33 Low 1C33 Mediu$ 1333 Mediu$ 4C33 Mediu$ 4333 Mediu$ C333 :igh @333 Mediu$ C333 :igh 2W33 Mediu$ 2133 Mediu$ 1333 Mediu$ 1V33 Mediu$ 1133 Mediu$ 4133 Mediu$ SQL- sele!t de!ode(2#2#4)# de!ode(2#1#4#@#@#D) fo$ dual. D'COD'(2#2#4) D'COD'(2#1#4#@#@#D) """"""""""""""""" """""""""""""""""""""""" 4 D If the nu$%e of paa$etes ae odd and diffeent then de!ode will displa7 nothing5 If the nu$%e of paa$etes ae even and diffeent then de!ode will displa7 last value5 If all the paa$etes ae null then de!ode will displa7 nothing5 If all the paa$etes ae Teos then de!ode will displa7 Teo5 s) 8R'(T'ST This will give the geatest sting5 Copy rights are reserved. 44 S7nta/0 geatest (!trn"1, !trin"2, !trin"3 !trin"n) '/0 SQL- sele!t geatest(=a=# =%=# =!=)# geatest(=satish=#=sinu=#=sað=) fo$ dual. 8R'(T 8R'(T """"""" """"""" ! sinu If all the paa$etes ae nulls then it will displa7 nothing5 If an7 of the paa$etes is null it will displa7 nothing5 t) L'(ST This will give the least sting5 S7nta/0 geatest (!trn"1, !trin"2, !trin"3 !trin"n) '/0 SQL- sele!t least(=a=# =%=# =!=)# least(=satish=#=sinu=#=sað=) fo$ dual. L'(ST L'(ST """"""" """"""" a sað If all the paa$etes ae nulls then it will displa7 nothing5 If an7 of the paa$etes is null it will displa7 nothing5 u) CO(L'SC' This will gives the fist non"null sting5 S7nta/0 !oales!e (!trn"1, !trin"2, !trin"3 !trin"n) '/0 SQL- sele!t !oales!e(=a=#=%=#=!=)# !oales!e(null#=a=#null#=%=) fo$ dual. CO(L'SC' CO(L'SC' Copy rights are reserved. 45 """"""""""" """"""""""" a a D(T' BUNCTIONS S7sdate CuentMdate CuentMti$esta$p S7sti$esta$p Lo!alti$esta$p D%ti$eTone Sessionti$eTone ToM!ha ToMdate (ddM$onths MonthsM%etween Ne/tMda7 LastMda7 '/ta!t 8eatest Least Round Tun! NewMti$e Coales!e Oa!le default date fo$at is DD"MON"**5 6e !an !hange the default fo$at to ou desied fo$at %7 using the following !o$$and5 SQL- alte session set nlsMdateMfo$at H KDD"MONT:"****;. )ut this will e/pie on!e the session was !losed5 a) S*SD(T' This will give the !uent date and ti$e5 '/0 SQL- sele!t s7sdate fo$ dual. S*SD(T' """"""""""" Copy rights are reserved. 46 1@"D'C"3D %) CURR'NTMD(T' This will etuns the !uent date in the session;s ti$eTone5 '/0 SQL- sele!t !uentMdate fo$ dual. CURR'NTMD(T' """""""""""""""""" 1@"D'C"3D !) CURR'NTMTIM'ST(MA This will etuns the !uent ti$esta$p with the a!tive ti$e Tone info$ation5 '/0 SQL- sele!t !uentMti$esta$p fo$ dual. CURR'NTMTIM'ST(MA """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 1@"D'C"3D 345@15@254W44DS (M G3C043 d) S*STIM'ST(MA This will etuns the s7ste$ date# in!luding fa!tional se!onds and ti$e Tone of the data%ase5 '/0 SQL- sele!t s7sti$esta$p fo$ dual. S*STIM'ST(MA """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 1@"D'C"3D 345@S5425W433SS (M G3C043 e) LOC(LTIM'ST(MA This will etuns lo!al ti$esta$p in the a!tive ti$e Tone info$ation# with no ti$e Tone info$ation shown5 Copy rights are reserved. 47 '/0 SQL- sele!t lo!alti$esta$p fo$ dual. LOC(LTIM'ST(MA """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 1@"D'C"3D 345@@52W5C31WV@ (M f) D)TIM'ZON' This will etuns the !uent data%ase ti$e Tone in UTC fo$at5 (Coodinated Univesal Ti$e) '/0 SQL- sele!t d%ti$eTone fo$ dual. D)TIM'ZON' """"""""""""""" "3V033 g) S'SSIONTIM'ZON' This will etuns the value of the !uent session;s ti$e Tone5 '/0 SQL- sele!t sessionti$eTone fo$ dual. S'SSIONTIM'ZON' """""""""""""""""""""""""""""""""""" G3C043
h) TOMC:(R This will %e used to e/ta!t vaious date fo$ats5 The availa%le date fo$ats as follows5 S7nta/0 toM!ha (date# 'ormat)
D(T' BORM(TS
D "" No of da7s in wee& DD "" No of da7s in $onth Copy rights are reserved. 48 DDD "" No of da7s in 7ea MM "" No of $onth MON "" Thee lette a%%eviation of $onth MONT: "" Bull7 spelled out $onth RM "" Ro$an nu$eal $onth D* "" Thee lette a%%eviated da7 D(* "" Bull7 spelled out da7 * "" Last one digit of the 7ea ** "" Last two digits of the 7ea *** "" Last thee digits of the 7ea **** "" Bull fou digit 7ea S**** "" Signed 7ea I "" One digit 7ea fo$ ISO standad I* "" Two digit 7ea fo$ ISO standad I** "" Thee digit 7ea fo$ ISO standad I*** "" Bou digit 7ea fo$ ISO standad *# *** "" *ea with !o$$a *'(R "" Bull7 spelled out 7ea CC "" Centu7 Q "" No of Uuates 6 "" No of wee&s in $onth 66 "" No of wee&s in 7ea I6 "" No of wee&s in 7ea fo$ ISO standad :: "" :ous MI "" Minutes SS "" Se!onds BB "" Ba!tional se!onds (M o AM "" Displa7s (M o AM depending upon ti$e of da7 (5M o A5M "" Displa7s (5M o A5M depending upon ti$e of da7 (D o )C "" Displa7s (D o )C depending upon the date (5D o )5C "" Displa7s (D o )C depending upon the date BM "" Aefi/ to $onth o da7# suppesses padding of $onth o da7 T: "" Suffi/ to a nu$%e SA "" suffi/ to a nu$%e to %e spelled out SAT: "" Suffi/ !o$%ination of T: and SA to %e %oth spelled out T:SA "" sa$e as SAT: '/0 SQL- sele!t toM!ha(s7sdate#=dd $onth 7777 hh0$i0ss a$ d7=) fo$ dual. Copy rights are reserved. 49 TOMC:(R(S*SD(T'#=DD MONT: ****::0MI """""""""""""""""""""""""""""""""""""""""""""""""""" 1@ de!e$%e 133D 31034014 p$ sun SQL- sele!t toM!ha(s7sdate#=dd $onth 7ea=) fo$ dual. TOMC:(R(S*SD(T'#=DDMONT:*'(R=) """"""""""""""""""""""""""""""""""""""""""""""""""""""" 1@ de!e$%e two thousand si/ SQL- sele!t toM!ha(s7sdate#=dd f$$onth 7ea=) fo$ dual. TOMC:(R(S*SD(T'#=DD BMMONT: *'(R=) """"""""""""""""""""""""""""""""""""""""""""""""""""""" 1@ de!e$%e two thousand si/ SQL- sele!t toM!ha(s7sdate#=ddth DDT:=) fo$ dual. TOMC:(R(S """""""""""" 1@th 1@ T: SQL- sele!t toM!ha(s7sdate#=ddspth DDSAT:=) fo$ dual. TOMC:(R(S*SD(T'#=DDSAT:DDSAT: """""""""""""""""""""""""""""""""""""""""" twent7"fouth T6'NT*"BOURT: SQL- sele!t toM!ha(s7sdate#=ddsp Ddsp DDSA =) fo$ dual. TOMC:(R(S*SD(T'#=DDSADDSADDSA=) """""""""""""""""""""""""""""""""""""""""""""""" twent7"fou Twent7"Bou T6'NT*"BOUR i) TOMD(T' This will %e used to !onvet the sting into data fo$at5 Copy rights are reserved. 50 S7nta/0 toMdate (date) '/0 SQL- sele!t toM!ha(toMdate(=1@?de!?133D=#=dd?$on?7777=)# =dd E $onth E da7=) fo$ dual. TOMC:(R(TOMD(T'(=1@?D'C?13 """""""""""""""""""""""""" 1@ E de!e$%e E Sunda7 "" If 7ou ae not using toM!ha oa!le will displa7 output in default date fo$at5 J) (DDMMONT:S This will add the spe!ified $onths to the given date5 S7nta/0 addM$onths (date, no_o'_mont)!) '/0 SQL- sele!t addM$onths(toMdate(=22"Jan"2SS3=#=dd"$on"7777=)# C) fo$ dual. (DDMMONT:S """""""""""""""" 22">UN"S3 SQL- sele!t addM$onths(toMdate(=22"Jan"2SS3=#=dd"$on"7777=)# "C) fo$ dual. (DDMMONT: """"""""""""""" 22"(U8"WS If no_o'_mont)! is Teo then it will displa7 the sa$e date5 If no_o'_mont)! is null then it will displa7 nothing5 &) MONT:SM)'T6''N This will give diffeen!e of $onths %etween two dates5 S7nta/0 $onthsM%etween (date1, date2) Copy rights are reserved. 51 '/0 SQL- sele!t $onthsM%etween(toMdate(=22"aug"2SS3=#=dd"$on"7777=)# toMdate(=22" Jan"2SS3=#=dd"$on"7777=)) fo$ dual.
MONT:SM)'T6''N(TOMD(T'(=22">(N"2SS3=#=DD"MON"****=)#TOMD(T'(=22"(U8" 2SS3=#=DD"MON"****=)) """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "V l) N'+TMD(* This will podu!e ne/t da7 of the given da7 fo$ the spe!ified date5 S7nta/0 ne/tMda7 (date, day) '/0 SQL- sele!t ne/tMda7(toMdate(=1@"de!"133D=#=dd"$on"7777=)#=sun=) fo$ dual. N'+TMD(*( """"""""""""" 42"D'C"3D "" If the da7 paa$ete is null then it will displa7 nothing5 $) L(STMD(* This will podu!e last da7 of the given date5 S7nta/0 lastMda7 (date) Copy rights are reserved. 52 '/0 SQL- sele!t lastMda7(toMdate(=1@"de!"133D=#=dd"$on"7777=)#=sun=) fo$ dual. L(STMD(*( """"""""""""" 42"D'C"3D n) '+TR(CT This is used to e/ta!t a potion of the date value5 S7nta/0 e/ta!t ((7ea X $onth X da7 X hou X $inute X se!ond)# date) '/0 SQL- sele!t e/ta!t(7ea fo$ s7sdate) fo$ dual. '+TR(CT(*'(RBROMS*SD(T') """""""""""""""""""""""""""""""""""" 133D "" *ou !an e/ta!t onl7 one value at a ti$e5 o) 8R'(T'ST This will give the geatest date5 S7nta/0 geatest (date1, date2, date3 daten) '/0 SQL- sele!t geatest(toMdate(=22"Jan"S3=#=dd"$on"77=)#toMdate(=22"$a"S3=#=dd" $on"77=)#toMdate(=22"ap"S3=#=dd"$on"77=)) fo$ dual.
8R'(T'ST( """"""""""""" 22"(AR"S3 p) L'(ST This will give the least date5 S7nta/0 least (date1, date2, date3 daten) Copy rights are reserved. 53 '/0 SQL- sele!t least(toMdate(=22"Jan"S3=#=dd"$on"77=)#toMdate(=22"$a"S3=#=dd"$on" 77=)#toMdate(=22"ap"S3=#=dd"$on"77=)) fo$ dual. L'(ST( """"""""""""" 22">(N"S3 U) ROUND Round will ounds the date to whi!h it was eUual to o geate than the given date5 S7nta/0 ound (date, (da7 X $onth X 7ea)) If the se!ond paa$ete was year then ound will !he!&s the $onth of the given date in the following anges5 >(N "" >UN >UL "" D'C If the $onth falls %etween >(N and >UN then it etuns the fist da7 of the !uent 7ea5 If the $onth falls %etween >UL and D'C then it etuns the fist da7 of the ne/t 7ea5 If the se!ond paa$ete was mont) then ound will !he!&s the da7 of the given date in the following anges5 2 "" 2C 2D "" 42 If the da7 falls %etween 2 and 2C then it etuns the fist da7 of the !uent $onth5 If the da7 falls %etween 2D and 42 then it etuns the fist da7 of the ne/t $onth5 If the se!ond paa$ete was day then ound will !he!&s the wee& da7 of the given date in the following anges5 SUN "" 6'D T:U "" SUN If the wee& da7 falls %etween SUN and 6'D then it etuns the pevious sunda75 If the wee&da7 falls %etween T:U and SUN then it etuns the ne/t sunda75 Copy rights are reserved. 54 If the se!ond paa$ete was null then it etuns nothing5 If the 7ou ae not spe!if7ing the se!ond paa$ete then ound will esets the ti$e to the %egining of the !uent da7 in !ase of use spe!ified date5 If the 7ou ae not spe!if7ing the se!ond paa$ete then ound will esets the ti$e to the %egining of the ne/t da7 in !ase of s7sdate5
ROUND(TOM ROUND(TOM """""""""""""" """""""""""""" 1@"D'C"3D 42"D'C"3D SQL- sele!t toM!ha(ound(toMdate(=1@"de!"3D=#=dd"$on"77=))# =dd $on 7777 hh0$i0ss a$=) fo$ dual. TOMC:(R(ROUND(TOMD(T'(= """"""""""""""""""""""""""""""""" 1@ de! 133D 21033033 a$ ) TRUNC Tun! will !hops off the date to whi!h it was eUual to o less than the given date5 S7nta/0 tun! (date, (da7 X $onth X 7ea)) Copy rights are reserved. 55 If the se!ond paa$ete was year then it alwa7s etuns the fist da7 of the !uent 7ea5 If the se!ond paa$ete was mont) then it alwa7s etuns the fist da7 of the !uent $onth5 If the se!ond paa$ete was day then it alwa7s etuns the pevious sunda75 If the se!ond paa$ete was null then it etuns nothing5 If the 7ou ae not spe!if7ing the se!ond paa$ete then tun& will esets the ti$e to the %egining of the !uent da75 '/0 SQL- sele!t tun!(toMdate(=1@"de!"3@=#=dd"$on"77=)#=7ea=)# tun!(toMdate(=22"$a" 3D=#=dd"$on"77=)#=7ea=) fo$ dual. TRUNC(TOM TRUNC(TOM """"""""""""" """""""""""""" 32">(N"3@ 32">(N"3D SQL- sele!t tun!(toMdate(=22"Jan"3@=#=dd"$on"77=)#=$onth=)# tun!(toMdate(=2W"Jan" 3@=#=dd"$on"77=)#=$onth=) fo$ dual. TRUNC(TOM TRUNC(TOM """"""""""""" """"""""""""" 32">(N"3@ 32">(N"3@
SQL- sele!t toM!ha(tun!(toMdate(=1@"de!"3D=#=dd"$on"77=))# =dd $on 7777 hh0$i0ss a$=) fo$ dual. TOMC:(R(TRUNC(TOMD(T'(= """"""""""""""""""""""""""""""""" 1@ de! 133D 21033033 a$ s) N'6MTIM' This will give the desied ti$eTone;s date and ti$e5 Copy rights are reserved. 56 S7nta/0 newMti$e (date, current_time,one, de!ired_time,one) (vaila%le ti$eTones ae as follows5 TIM'ZON'S (ST?(DT "" (tlanti! standad?da7 light ti$e )ST?)DT "" )eing standad?da7 light ti$e CST?CDT "" Cental standad?da7 light ti$e 'ST?'DT "" 'asten standad?da7 light ti$e 8MT "" 8eenwi!h $ean ti$e :ST?:DT "" (las&a":awaii standad?da7 light ti$e MST?MDT "" Mountain standad?da7 light ti$e NST "" Newfoundland standad ti$e AST?ADT "" Aa!ifi! standad?da7 light ti$e *ST?*DT "" *u&on standad?da7 light ti$e '/0 SQL- sele!t toM!ha(newMti$e(s7sdate#=g$t=#=7st=)#=dd $on 7777 hh0$i0ss a$=) fo$ dual. TOMC:(R(N'6MTIM'(S*SD(T """"""""""""""""""""""""""""""""""" 1@ de! 133D 310C2013 p$ SQL- sele!t toM!ha(newMti$e(s7sdate#=g$t=#=est=)#=dd $on 7777 hh0$i0ss a$=) fo$ dual. TOMC:(R(N'6MTIM'(S*SD(T """"""""""""""""""""""" 1@ de! 133D 3D0C201D p$ t) CO(L'SC' This will give the fist non"null date5 S7nta/0 !oales!e (date1, date2, date3 daten) '/0 Copy rights are reserved. 57 SQL- sele!t !oales!e(=21"Jan"S3=#=24"Jan"SS=)# !oales!e(null#=21"Jan"S3=#=14"$a" SW=#null) fo$ dual. CO(L'SC'( CO(L'SC'( """"""""""""" """""""""""" 21"Jan"S3 21"Jan"S3 MISC'LL(N'OUS BUNCTIONS Uid Use 9siTe Ran& DenseMan& a) UID This will etuns the intege value !oesponding to the use !uentl7 logged in5 '/0 SQL- sele!t uid fo$ dual. UID """""""""" 42S %) US'R This will etuns the login;s use na$e5 '/0 SQL- sele!t use fo$ dual. US'R """""""""""""""" S(F'T: !) 9SIZ' This will etuns the nu$%e of %7tes in the e/pession5 Copy rights are reserved. 58 '/0 SQL- sele!t vsiTe(214)# vsiTe(=!o$pute=)# vsiTe(=21"Jan"S3=) fo$ dual. 9SIZ'(214) 9SIZ'(=COMAUT'R=) 9SIZ'(=21">(N"S3=) """"""""""""" """"""""""""""""""""""" """""""""""""""""""""" 4 W S d) R(NF This will give the non"seUuential an&ing5 '/0 SQL- sele!t ownu$#sal fo$ (sele!t sal fo$ e$p ode %7 sal des!). RO6NUM S(L """""""""" """""""""" 2 C333 1 4333 4 4333 @ 1SVC C 1WC3 D 1@C3 V 2D33 W 2C33 S 2433 23 21C3 22 21C3 21 2233 24 2333 2@ SC3 2C W33 SQL- sele!t an&(1SVC) within goup(ode %7 sal des!) fo$ e$p. R(NF(1SVC)6IT:IN8ROUA(ORD'R)*S(LD'SC) """"""""""""""""""""""""""""""""""""""""""""""""""""""""" @ d) D'NS'MR(NF Copy rights are reserved. 59 This will give the seUuential an&ing5
'/0 SQL- sele!t denseMan&(1SVC) within goup(ode %7 sal des!) fo$ e$p. D'NS'MR(NF(1SVC)6IT:IN8ROUA(ORD'R)*S(LD'SC) """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 4 CON9'RSION BUNCTIONS )inMtoMnu$ Chatoowid Rowidto!ha ToMnu$%e ToM!ha ToMdate a) )INMTOMNUM This will !onvet the %ina7 value to its nu$ei!al eUuivalent5 S7nta/0 %inMtoMnu$( binary_bit!) '/0 SQL- sele!t %inMtoMnu$(2#2#3) fo$ dual. )INMTOMNUM(2#2#3) """""""""""""""""""""""" D If all the %its ae Teo then it podu!es Teo5 If all the %its ae null then it podu!es an eo5 %) C:(RTORO6ID This will !onvet a !haa!te sting to a!t li&e an intenal oa!le ow identifie o owid5 !) RO6IDTOC:(R Copy rights are reserved. 60 This will !onvet an intenal oa!le ow identifie o owid to !haa!te sting5 d) TOMNUM)'R This will !onvet a !ha o va!ha to nu$%e5 e) TOMC:(R This will !onvet a nu$%e o date to !haa!te sting5 f) TOMD(T' This will !onvet a nu$%e# !ha o va!ha to a date5 8ROUA BUNCTIONS Su$ (vg Ma/ Min Count 8oup fun!tions will %e applied on all the ows %ut podu!es single output5 a) SUM This will give the su$ of the values of the spe!ified !olu$n5 S7nta/0 su$ (column) '/0 SQL- sele!t su$(sal) fo$ e$p. SUM(S(L) """""""""" 4WD33 %) (98 Copy rights are reserved. 61 This will give the aveage of the values of the spe!ified !olu$n5 S7nta/0 avg (column) '/0 SQL- sele!t avg(sal) fo$ e$p. (98(S(L) """"""""""""""" 1VCV52@1WD !) M(+ This will give the $a/i$u$ of the values of the spe!ified !olu$n5 S7nta/0 $a/ (column) '/0 SQL- sele!t $a/(sal) fo$ e$p. M(+(S(L) """""""""" C333 d) MIN This will give the $ini$u$ of the values of the spe!ified !olu$n5 S7nta/0 $in (column) '/0 SQL- sele!t $in(sal) fo$ e$p. MIN(S(L) """""""""" C33 e) COUNT Copy rights are reserved. 62 This will give the !ount of the values of the spe!ified !olu$n5 S7nta/0 !ount (column) '/0 SQL- sele!t !ount(sal)#!ount(E) fo$ e$p. COUNT(S(L) COUNT(E) """""""""""""" """""""""""" 2@ 2@ CONSTR(INTS Constaints ae !ategoiTed as follows5 Copy rights are reserved. 63 Do$ain integit7 !onstaints Not null Che!& 'ntit7 integit7 !onstaints UniUue Ai$a7 &e7 Refeential integit7 !onstaints Boeign &e7 Constaints ae alwa7s atta!hed to a !olu$n not a ta%le5 6e !an add !onstaints in thee wa7s5 Colu$n level "" along with the !olu$n definition Ta%le level "" afte the ta%le definition (lte level "" using alte !o$$and 6hile adding !onstaints 7ou need not spe!if7 the na$e %ut the t7pe onl7# oa!le will intenall7 na$e the !onstaint5 If 7ou want to give a na$e to the !onstaint# 7ou have to use the !onstaint !lause5 NOT NULL This is used to avoid null values5 6e !an add this !onstaint in !olu$n level onl75 '/0 SQL- !eate ta%le student(no nu$%e(1) not null# na$e va!ha(23)# $a&s nu$%e(4)). SQL- !eate ta%le student(no nu$%e(1) !onstaint nn not null# na$e va!ha(23)# $a&s nu$%e(4)). C:'CF This is used to inset the values %ased on spe!ified !ondition5 6e !an add this !onstaint in all thee levels5 Copy rights are reserved. 64 '/0 COLUMN L'9'L SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4) !he!& ($a&s - 433)). SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4) !onstaint !h !he!&($a&s - 433)). T()L' L'9'L SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4)# !he!& ($a&s - 433)). SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4)# !onstaint !h !he!&($a&s - 433)). (LT'R L'9'L SQL- alte ta%le student add !he!&($a&s-433). SQL- alte ta%le student add !onstaint !h !he!&($a&s-433). UNIQU' This is used to avoid dupli!ates %ut it allow nulls5 6e !an add this !onstaint in all thee levels5 '/0 COLUMN L'9'L SQL- !eate ta%le student(no nu$%e(1) uniUue# na$e va!ha(23)# $a&s nu$%e(4)). SQL- !eate ta%le student(no nu$%e(1) !onstaint un uniUue# na$e va!ha(23)# $a&s nu$%e(4)). T()L' L'9'L
SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4)# uniUue(no)). SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4)# Copy rights are reserved. 65 !onstaint un uniUue(no)). (LT'R L'9'L SQL- alte ta%le student add uniUue(no). SQL- alte ta%le student add !onstaint un uniUue(no). ARIM(R* F'* This is used to avoid dupli!ates and nulls5 This will wo& as !o$%ination of uniUue and not null5 Ai$a7 &e7 alwa7s atta!hed to the paent ta%le5 6e !an add this !onstaint in all thee levels5 '/0 COLUMN L'9'L
T()L' L'9'L SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4)# pi$a7 &e7(no)). SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4)# !onstaint p& pi$a7 &e7(no)). (LT'R L'9'L SQL- alte ta%le student add pi$a7 &e7(no). SQL- alte ta%le student add !onstaint p& pi$a7 &e7(no). BOR'I8N F'* This is used to efeen!e the paent ta%le pi$a7 &e7 !olu$n whi!h allows dupli!ates5 Boeign &e7 alwa7s atta!hed to the !hild ta%le5 Copy rights are reserved. 66 6e !an add this !onstaint in ta%le and alte levels onl75 '/0 T()L' L'9'L SQL- !eate ta%le e$p(e$pno nu$%e(1)# ena$e va!ha(23)# deptno nu$%e(1)# pi$a7 &e7(e$pno)# foeign &e7(deptno) efeen!es dept(deptno)). SQL- !eate ta%le e$p(e$pno nu$%e(1)# ena$e va!ha(23)# deptno nu$%e(1)# !onstaint p& pi$a7 &e7(e$pno)# !onstaint f& foeign &e7(deptno) efeen!es dept(deptno)).
(LT'R L'9'L
SQL- alte ta%le e$p add foeign &e7(deptno) efeen!es dept(deptno). SQL- alte ta%le e$p add !onstaint f& foeign &e7(deptno) efeen!es dept(deptno). On!e the pi$a7 &e7 and foeign &e7 elationship has %een !eated then 7ou !an not e$ove an7 paent e!od if the dependent !hilds e/ists5
USIN8 ON D'LT' C(SC(D' )7 using this !lause 7ou !an e$ove the paent e!od even it !hilds e/ists5 )e!ause when eve 7ou e$ove paent e!od oa!le auto$ati!all7 e$oves all its dependent e!ods fo$ !hild ta%le# if this !lause is pesent while !eating foeign &e7 !onstaint5 '/0 T()L' L'9'L SQL- !eate ta%le e$p(e$pno nu$%e(1)# ena$e va!ha(23)# deptno nu$%e(1)# pi$a7 &e7(e$pno)# foeign &e7(deptno) efeen!es dept(deptno) on delete !as!ade). SQL- !eate ta%le e$p(e$pno nu$%e(1)# ena$e va!ha(23)# deptno nu$%e(1)# !onstaint p& pi$a7 &e7(e$pno)# !onstaint f& foeign &e7(deptno) efeen!es dept(deptno) on delete !as!ade).
(LT'R L'9'L SQL- alte ta%le e$p add foeign &e7(deptno) efeen!es dept(deptno) on delete !as!ade. Copy rights are reserved. 67 SQL- alte ta%le e$p add !onstaint f& foeign &e7(deptno) efeen!es dept(deptno) on delete !as!ade. COMAOSIT' F'*S ( !o$posite &e7 !an %e defined on a !o$%ination of !olu$ns5 6e !an define !o$posite &e7s on entit7 integit7 and efeential integit7 !onstaints5 Co$posite &e7 !an %e defined in ta%le and alte levels onl75 '/0 UNIQU' (T()L' L'9'L)
SQL- alte ta%le e$p add foeign &e7(deptno#dna$e) efeen!es dept(deptno#dna$e). SQL- alte ta%le e$p add !onstaint f& foeign &e7(deptno#dna$e) efeen!es dept(deptno#dna$e). D'B'RR()L' CONSTR(INTS 'a!h !onstaint has two additional atti%utes to suppot defeed !he!&ing of !onstaints5 Defeed initiall7 i$$ediate Defeed initiall7 defeed Defeed initiall7 i$$ediate !he!&s fo !onstaint violation at the ti$e of inset5 Defeed initiall7 defeed !he!&s fo !onstaint violation at the ti$e of !o$$it5 '/0 SQL- !eate ta%le student(no nu$%e(1)# na$e va!ha(23)# $a&s nu$%e(4)# !onstaint un uniUue(no) defeed initiall7 i$$ediate). SQL- !eate ta%le student(no nu$%e(1)# na$e va!ha(23)# $a&s nu$%e(4)# !onstaint un uniUue(no) defeed initiall7 defeed). SQL- alte ta%le student add !onstaint un uniUue(no) defea%le initiall7 defeed.
SQL- set !onstaints all i$$ediate. This will ena%le all the !onstaints violations at the ti$e of inseting5 SQL- set !onstaints all defeed. This will ena%le all the !onstaints violations at the ti$e of !o$$it5 OA'R(TIONS 6IT: CONSTR(INTS Aossi%le opeations with !onstaints as follows5 'na%le Disa%le 'nfo!e Dop 'N()L' This will ena%le the !onstaint5 )efoe ena%le# the !onstaint will !he!& the e/isting data5 Copy rights are reserved. 69 '/0 SQL- alte ta%le student ena%le !onstaint un. DIS()L' This will disa%le the !onstaint5 '/0 SQL- alte ta%le student ena%le !onstaint un. 'NBORC' This will enfo!e the !onstaint athe than ena%le fo futue insets o updates5 This will not !he!& fo e/isting data while enfo!ing data5 '/0 SQL- alte ta%le student enfo!e !onstaint un. DROA This will e$ove the !onstaint5 '/0 SQL- alte ta%le student dop !onstaint un. On!e the ta%le is dopped# !onstaints auto$ati!all7 will dop5 Copy rights are reserved. 70 C(S' (ND D'B(ULT C(S' Case is si$ila to de!ode %ut easie to undestand while going though !oding '/0 SQL- Sele!t sal# Case sal 6hen C33 then Klow; 6hen C333 then Khigh; 'lse K$ediu$; 'nd !ase Bo$ e$p. S(L C(S' """"" """""""" C33 low 1C33 $ediu$ 1333 $ediu$ 4C33 $ediu$ 4333 $ediu$ C333 high @333 $ediu$ C333 high 2W33 $ediu$ 2133 $ediu$ 1333 $ediu$ 1V33 $ediu$ 1133 $ediu$ 4133 $ediu$ D'B(ULT Copy rights are reserved. 71 -e'ault !an %e !onsideed as a su%stitute %ehavio of not null !onstaint when applied to new ows %eing enteed into the ta%le5 6hen 7ou define a !olu$n with the de'ault &e7wod followed %7 a value# 7ou ae a!tuall7 telling the data%ase that# on inset if a ow was not assigned a value fo this !olu$n# use the default value that 7ou have spe!ified5 Default is applied onl7 duing insetion of new ows5 '/0 SQL- !eate ta%le student(no nu$%e(1) default 22#na$e va!ha(1)). SQL- inset into student values(2#=a=). SQL- inset into student(na$e) values(=%=).
SQL- sele!t E fo$ student. NO N(M' """""" """"""""" 2 a 22 % SQL- inset into student values(null# K!;). SQL- sele!t E fo$ student. NO N(M' """""" """"""""" 2 a 22 % C "" Default !an not oveide nulls5 ()STR(CT D(T( T*A'S So$e ti$es 7ou $a7 want t7pe whi!h holds all t7pes of data in!luding nu$%es# !has and spe!ial !haa!tes so$ething li&e this5 *ou !an not a!hieve this using pe"defined t7pes5 *ou !an define !usto$ t7pes whi!h holds 7ou desied data5 Copy rights are reserved. 72 '/0 Suppose in a ta%le we have addess !olu$n whi!h holds hno and !it7 info$ation5 6e will define a !usto$ t7pe whi!h holds %oth nu$ei! as well as !ha data5
INS'RTIN8 D(T( INTO (DT T()L'S SQL- inset into student values(2#=a=#add(222#=h7d=)). SQL- inset into student values(1#=%=#add(111#=%ang=)). SQL- inset into student values(4#=!=#add(444#=delhi=)).
S'L'CTIN8 D(T( BROM (DT T()L'S SQL- sele!t E fo$ student. NO N(M' (DDR'SS(:NO# CIT*) """ """"""" """"""""""""""""""""""""" 2 a (DDR(222# =h7d=) 1 % (DDR(111# =%ang=) 4 ! (DDR(444# =delhi=) SQL- sele!t no#na$e#s5addess5hno#s5addess5!it7 fo$ student s. NO N(M' (DDR'SS5:NO (DDR'SS5CIT* """" """"""" """"""""""""""""" """""""""""""""" 2 a 222 h7d 1 % 111 %ang 4 ! 444 delhi UAD(T' 6IT: (DT T()L'S SQL- update student s set s5addess5!it7 H =%o$%a7= whee s5addess5hno H 444. SQL- sele!t no#na$e#s5addess5hno#s5addess5!it7 fo$ student s. Copy rights are reserved. 73 NO N(M' (DDR'SS5:NO (DDR'SS5CIT* """" """"""" """"""""""""""""" """""""""""""""" 2 a 222 h7d 1 % 111 %ang 4 ! 444 %o$%a7 D'L'T' 6IT: (DT T()L'S SQL- delete student s whee s5addess5hno H 222. SQL- sele!t no#na$e#s5addess5hno#s5addess5!it7 fo$ student s. NO N(M' (DDR'SS5:NO (DDR'SS5CIT* """" """"""" """"""""""""""""" """""""""""""""" 1 % 111 %ang 4 ! 444 %o$%a7 DROAAIN8 (DT SQL- dop t7pe add. O)>'CT 9I'6S (ND M'T:ODS O)>'CT 9I'6S If 7ou want to i$ple$ent o%Je!ts with the e/isting ta%le# o%Je!t views !o$e into pi!tue5 *ou define the o%Je!t and !eate a view whi!h elates this o%Je!t to the e/isting ta%le nothing %ut ob#ect view5 O%Je!t views ae used to elate the use defined o%Je!ts to the e/isting ta%le5 '/0 2) (ssu$e that the ta%le student has alead7 %een !eated with the following !olu$ns SQL- !eate ta%le student(no nu$%e(1)#na$e va!ha(23)#hno nu$%e(4)#!it7 va!ha(23)). 1) Ceate the following t7pes Copy rights are reserved. 74 SQL- !eate t7pe add as o%Je!t(hno nu$%e(1)#!it7 va!ha(23)).? SQL- !eate t7pe stud as o%Je!t(na$e va!ha(23)#addess add).? 4) Relate the o%Je!ts to the student ta%le %7 !eating the o%Je!t view SQL- !eate view studentMov(no#studMinfo) as sele!t no#stud(na$e#add(hno#!it7)) fo$ student. @) Now 7ou !an inset data into student ta%le in two wa7s a) )7 egula inset SQL- Inset into student values(2#;sudha;#222#;h7d;). %) )7 using o%Je!t view SQL- Inset into studentMov values(2#stud(Ksudha;#add(222#;h7d;))). M'T:ODS *ou !an define $ethods whi!h ae nothing %ut fun!tions in t7pes and appl7 in the ta%les whi!h holds the t7pes. '/0 2) Defining $ethods in t7pes SQL- Ceate t7pe stud as o%Je!t(na$e va!ha(23)#$a&s nu$%e(4)# Me$%e fun!tion $a&sMf($a&s in nu$%e) etun nu$%e# Aag$a esti!tMefeen!es($a&sMf#wnds#nds#wnps#fnps)).? 1) Defining t7pe %od7 SQL- Ceate t7pe %od7 stud as Me$%e fun!tion $a&sMf($a&s in nu$%e) etun nu$%e is )egin Retun ($a&sG233). 'nd $a&sMf. 'nd.? 4) Ceate a ta%le using stud t7pe SQL- Ceate ta%le student(no nu$%e(1)#info stud). @) Inset so$e data into student ta%le SQL- Inset into student values(2#stud(Ksudha;#233)). C) Using $ethod in sele!t SQL- Sele!t s5info5$a&sMf(s5info5$a&s) fo$ student s. "" :ee we ae using the pag$a esti!tMefeen!es to avoid the wites to the Data%ase5 Copy rights are reserved. 75 9(RR(*S (ND N'ST'D T()L'S 9(RR(*S ( va7ing aa7 allows 7ou to stoe epeating atti%utes of a e!od in a single ow %ut with li$it5 '/0 2) 6e !an !eate vaa7s using oa!le t7pes as well as use defined t7pes5 a) 9aa7 using pe"defined t7pes SQL- Ceate t7pe va as vaa7(C) of va!ha(23).? %) 9aa7s using use defined t7pes SQL- Ceate t7pe add as o%Je!t(hno nu$%e(4)#!it7 va!ha(23)).? SQL- Ceate t7pe va as vaa7(C) of add.? 1) Using vaa7 in ta%le SQL- Ceate ta%le student(no nu$%e(1)#na$e va!ha(23)#addess va). 4) Inseting values into vaa7 ta%le SQL- Inset into student values(2#;sudha;#va(add(222#;h7d;))). SQL- Inset into student values(1#;Jagan;#va(add(222#;h7d;)#add(111#;%ang;))). @) Sele!ting data fo$ vaa7 ta%le SQL- Sele!t E fo$ student. "" This will displa7 vaa7 !olu$n data along with vaa7 and adt. SQL- Sele!t no#na$e# s5E fo$ student s2# ta%le(s25addess) s. Copy rights are reserved. 76 "" This will displa7 in geneal fo$at C) Instead of s5E 7ou !an spe!if7 the !olu$ns in vaa7 SQL- Sele!t no#na$e# s5hno#s5!it7 fo$ student s2#ta%le(s25addess) s. "" Update and delete not possi%le in vaa7s5 "" :ee we used ta%le fun!tion whi!h will ta&e the vaa7 !olu$n as input fo podu!ing output e/!luding vaa7 and t7pes5
N'ST'D T()L'S ( nested ta%le is# as its na$e i$plies# a ta%le within a ta%le5 In this !ase it is a ta%le that is epesented as a !olu$n within anothe ta%le5 Nested ta%le has the sa$e effe!t of vaa7s %ut has no li$it5 '/0 2) 6e !an !eate nested ta%les using oa!le t7pes and use defined t7pes whi!h has no li$it5 a) Nested ta%les using pe"defined t7pes SQL- Ceate t7pe nt as ta%le of va!ha(23).? %) Nested ta%les using use defined t7pes SQL- Ceate t7pe add as o%Je!t(hno nu$%e(4)#!it7 va!ha(23)).? SQL- Ceate t7pe nt as ta%le of add.? 1) Using nested ta%le in ta%le SQL- Ceate ta%le student(no nu$%e(1)#na$e va!ha(23)#addess nt) nested ta%le addess stoe as studentMte$p. 4) Inseting values into ta%le whi!h has nested ta%le SQL- Inset into student values (2#;sudha;#nt(add(222#;h7d;))). SQL- Inset into student values (1#;Jagan;#nt(add(222#;h7d;)#add(111#;%ang;))). @) Sele!ting data fo$ ta%le whi!h has nested ta%le SQL- Sele!t E fo$ student. "" This will displa7 nested ta%le !olu$n data along with nested ta%le and adt. SQL- Sele!t no#na$e# s5E fo$ student s2# ta%le(s25addess) s. "" This will displa7 in geneal fo$at C) Instead of s5E 7ou !an spe!if7 the !olu$ns in nested ta%le SQL- Sele!t no#na$e# s5hno#s5!it7 fo$ student s2#ta%le(s25addess) s. D) Inseting nested ta%le data to the e/isting ow Copy rights are reserved. 77 SQL- Inset into ta%le(sele!t addess fo$ student whee noH2) values(add(CCC#;!hennai;)). V) Update in nested ta%les SQL- Update ta%le(sele!t addess fo$ student whee noH1) s set s5!it7H;%o$%a7; whee s5hno H 111. W) Delete in nested ta%le SQL- Delete ta%le(sele!t addess fo$ student whee noH4) s whee s5hnoH444. D(T( MOD'L (LLMCOLLMT*A'S (LLMT*A'S D)(MCOLLMT*A'S D)(MT*A'S US'RMCOLLMT*A'S US'RMT*A'S Copy rights are reserved. 78 BL(S:)(CF QU'R* Used to etieve the data whi!h has %een alead7 !o$$itted with out going fo e!ove75 Blash%a!&s ae of two t7pes Ti$e %ase flash%a!& SCN %ased flash%a!& (SCN stands fo S7ste$ Change Nu$%e) '/0 2) Using ti$e %ased flash%a!& a) SQL- Sele!t Efo$ student. "" This will displa7 all the ows %) SQL- Delete student. !) SQL- Co$$it. "" this will !o$$it the wo&5 d) SQL- Sele!t Efo$ student. "" :ee it will displa7 nothing e) Then e/e!ute the following po!edues SQL- '/e! d%$sMflash%a!&5ena%leMatMti$e(s7sdate"1?2@@3) f) SQL- Sele!t Efo$ student. "" :ee it will displa7 the lost data "" The lost data will !o$e %ut the !uent s7ste$ ti$e was used g) SQL- '/e! d%$sMflash%a!&5disa%le "" :ee we have to disa%le the flash%a!& to ena%le it again 1) Using SCN %ased flash%a!& a) De!lae a vaia%le to stoe SCN SQL- 9aia%le s nu$%e %) 8et the SCN SQL- '/e! 0s 0H e/e! d%$sMflash%a!&5getMs7ste$M!hangeMnu$%e !) To see the SCN SQL- Aint s d) Then e/e!ute the following po!edues SQL- '/e! d%$sMflash%a!&5ena%leMatMs7ste$M!hangeMnu$%e(0s) SQL- '/e! d%$sMflash%a!&5disa%le Copy rights are reserved. 79 '+T'RN(L T()L'S *ou !an use e/tenal ta%le featue to a!!ess e/tenal files as if the7 ae ta%les inside the data%ase5 6hen 7ou !eate an e/tenal ta%le# 7ou define its stu!tue and lo!ation with in oa!le5 6hen 7ou Uue7 the ta%le# oa!le eads the e/tenal ta%le and etuns the esults Just as if the data had %een stoed with in the data%ase5 (CC'SSIN8 '+T'RN(L T()L' D(T( To a!!ess e/tenal files fo$ within oa!le# 7ou $ust fist use the !eate die!to7 !o$$and to define a die!to7 o%Je!t pointing to the e/tenal file lo!ation Uses who will a!!ess the e/tenal files $ust have the ead and wite pivilege on the die!to75 '/0 CR'(TIN8 DIR'CTOR* (ND OS L'9'L BIL' SQL- SUlplus s7ste$?$anage SQL- Ceate die!to7 saðMdi as K?9isd%?visd%?S5153?e/tenal;. SQL- 8ant all on die!to7 saðMdi to sað. SQL- Conn sað?sað SQL- Spool dept5lst SQL- Sele!t deptno XX K#; XX dna$e XX K#; XX lo! fo$ dept. SQL- Spool off CR'(TIN8 '+T'RN(L T()L' SQL- Ceate ta%le deptMe/t (deptno nu$%e(1)# Dna$e va!ha(2@)# Lo! va!ha(24)) OganiTation e/tenal ( t7pe oa!leMloade Default die!to7 saðMdi (!!ess paa$etes ( e!ods deli$ited %7 newline Bields te$inated %7 P#Q ( deptno nu$%e(1)# Dna$e va!ha(2@)# Copy rights are reserved. 80 Lo! va!ha(24))) Lo!ation (K?9isd%?visd%?S5153?dept5lst;)). S'L'CTIN8 D(T( BROM '+T'RN(L T()L' SQL- sele!t E fo$ deptMe/t. This will ead fo$ dept5lst whi!h is a opeating s7ste$ level file5 LIMIT(TIONS ON '+T'RN(L T()L'S a) *ou !an not pefo$ inset# update# and delete opeations a) Inde/ing not possi%le %) Constaints not possi%le )'N'BITS OB '+T'RN(L T()L'S a) Queies of e/tenal ta%les !o$plete ve7 Uui!&l7 even though a full ta%le s!an id eUuied with ea!h a!!ess %) *ou !an Join e/tenal ta%les to ea!h othe o to standad ta%les R'B D'R'B 9(LU' R'B The ef fun!tion allows efeen!ing of e/isting ow o%Je!ts5 'a!h of the ow o%Je!ts has an o%Je!t id value assigned to it5 The o%Je!t id assigned !an %e seen %7 using ef fun!tion5 Copy rights are reserved. 81 D'R'B The deef fun!tion pefo$s opposite a!tion5 It ta&es a efeen!e value of o%Je!t id and etuns the value of the ow o%Je!ts5 9(LU' 'ven though the pi$a7 ta%le is o%Je!t ta%le# still it displa7s the ows in geneal fo$at5 To displa7 the entie stu!tue of the o%Je!t# this will %e used5 '/0 2) !eate vendotMadt t7pe SQL- Ceate t7pe vendoMadt as o%Je!t (vendoM!ode nu$%e(1)# vendoMna$e va!ha(1)# vendoMaddess va!ha(23)).? 1) !eate o%Je!t ta%les vendos and vendos2 SQL- Ceate ta%le vendos of vendoMadt. SQL- Ceate ta%le vendos2 of vendoMadt. 4) inset the data into o%Je!t ta%les SQL- inset into vendos values(2# Ka;# Kh7d;). SQL- inset into vendos values(1# K%;# K%ang;). SQL- inset into vendos2 values(4# K!;# Kdelhi;). SQL- inset into vendos2 values(@# Kd;# K!hennai;). @) !eate anothe ta%le odes whi!h holds the vendoMadt t7pe also5 SQL- Ceate ta%le odes (odeMno nu$%e(1)# vendoMinfo ef vendoMadt). O SQL- Ceate ta%le odes (odeMno nu$%e(1)# vendoMinfo ef vendoMadt with owid). C) inset the data into odes ta%le The vendoMinfo !olu$n in the following s7nta/es will stoe o%Je!t id of an7 ta%le whi!h is efeen!ed %7 vendoMadt o%Je!t ( %oth vendos and vendos2)5 SQL- inset into odes values(22#(sele!t ef(v) fo$ vendos v whee vendoM!ode H 2)). SQL- inset into odes values(21#(sele!t ef(v) fo$ vendos v whee vendoM!ode H 1)). SQL- inset into odes values(24#(sele!t ef(v2) fo$ vendos2 v2 whee vendoM!ode H 2)). Copy rights are reserved. 82 SQL- inset into odes values(2@#(sele!t ef(v2) fo$ vendos2 v2 whee vendoM!ode H 2)). D) To see the o%Je!t ids of vendo ta%le SQL- Sele!t ef(9) fo$ vendos v. V) If 7ou see the vendoMinfo of odes it will show onl7 the o%Je!t ids not the values# to see the values SQL- Sele!t deef(o5vendoMinfo) fo$ odes o. W) 'ven though the vendos ta%le is o%Je!t ta%le it will not show the adt along with data# to see the data along with the adt SQL-Sele!t E fo$ vendos. This will give the data without adt5 SQL-Sele!t value(v) fo$ vendos v. This will give the !olu$ns data along wih the t7pe5 R'B CONSTR(INTS Ref !an also a!ts as !onstaint5 'ven though vendos2 also holding vendoMadt# the odes ta%le will stoe the o%Je!t ids of vendos onl7 %e!ause it is !onstained to that ta%le onl75 The vendoMinfo !olu$n in the following s7nta/es will stoe o%Je!t ids of vendos onl75 SQL- Ceate ta%le odes (odeMno nu$%e(1)# vendoMinfo ef vendoMadt s!ope is vendos). O SQL- Ceate ta%le odes (odeMno nu$%e(1)# vendoMinfo ef vendoMadt !onstaint f& efeen!es vendos). Copy rights are reserved. 83 O)>'CT 9I'6S 6IT: R'B'R'NC'S To i$ple$ent the o%Je!ts and the ef !onstaints to the e/isting ta%les# what we !an do[ Si$pl7 dop the %oth ta%les and e!eate with o%Je!ts and ef !onstains5 )ut 7ou !an a!hieve this with out dopping the ta%les and without losing the data %7 !eating o%Je!t views with efeen!es5 '/0 a) Ceate the following ta%les SQL- Ceate ta%le student2(no nu$%e(1) pi$a7 &e7#na$e va!ha(1)#$a&s nu$%e(4)). SQL- Ceate ta%le student1(no nu$%e(1) pi$a7 &e7#hno nu$%e(4)#!it7 va!ha(23)#id nu$%e(1)#foeign Fe7(id) efeen!es student2(no)). %) Inset the e!ods into %oth ta%les SQL- inset into student2(2#;a;#233). SQL- inset into student2(1#;%;#133). SQL- inset into student1(22#222#;h7d;#2). SQL- inset into student1(21#111#;%ang;#1). Copy rights are reserved. 84 SQL- inset into student1(24#444#;%o$%a7;#2). !) Ceate the t7pe SQL- !eate o epla!e t7pe stud as o%Je!t(no nu$%e(1)#na$e va!ha(1)#$a&s nu$%e(4)).? d) 8eneating OIDs SQL- Ceate o epla!e view student2Mov of stud with o%Je!t identifie(o id) (no) as Sele!t E fo$ Student2. e) 8eneating efeen!es SQL- Ceate o epla!e view student1Mov as sele!t no#hno#!it7# $a&eMef(student2Mov#id) id fo$ Student1. d) Que7 the following SQL- sele!t Efo$ student2Mov. SQL- sele!t ef(s) fo$ student2Mov s. SQL- sele!t values(s) fo$ student2Mov. SQ- sele!t Efo$ student1Mov. SQL- sele!t deef(s5id) fo$ student1Mov s. A(RTITIONS ( single logi!al ta%le !an %e split into a nu$%e of ph7si!all7 sepaate pie!es %ased on anges of &e7 values5 'a!h of the pats of the ta%le is !alled a patition5 ( non"patitioned ta%le !an not %e patitioned late5 T*A'S Range patitions List patitions :ash patitions Su% patitions (D9(NT(8'S Redu!ing downti$e fo s!heduled $aintenan!e# whi!h allows $aintenan!e opeations to %e !aied out on sele!ted patitions while othe patitions ae availa%le to uses5 Redu!ing downti$e due to data failue# failue of a pati!ula patition will no wa7 affe!t othe patitions5 Aatition independen!e allows fo !on!uent use of the vaious patitions fo vaious puposes5 Copy rights are reserved. 85 (D9(NT(8'S OB A(RTITIONS )* STORIN8 T:'M IN DIBB'R'NT T()L'SA(C'S Redu!es the possi%ilit7 of data !ouption in $ultiple patitions5 )a!& up and e!ove7 of ea!h patition !an %e done independentl75 DIS(D9(NT(8'S Aatitioned ta%les !annot !ontain an7 !olu$ns with long o long aw datat7pes# LO) t7pes o o%Je!t t7pes5 R(N8' A(RTITIONS a) Ceating ange patitioned ta%le SQL- Ceate ta%le student(no nu$%e(1)#na$e va!ha(1)) patition %7 ange(no) (patition p2 values less than(23)# patition p1 values less than(13)# patition p4 values less than(43)#patition p@ values less than($a/value)). EE if 7ou ae using $a/value fo the last patition# 7ou !an not add a patition5 %) Inseting e!ods into ange patitioned ta%le SQL- Inset into student values(2#;a;). "" this will go to p2 SQL- Inset into student values(22#;%;). "" this will go to p1 SQL- Inset into student values(12#;!;). "" this will go to p4 SQL- Inset into student values(42#;d;). "" this will go to p@ !) Retieving e!ods fo$ ange patitioned ta%le SQL- Sele!t Efo$ student. SQL- Sele!t Efo$ student patition(p2). d) Aossi%le opeations with ange patitions (dd Dop Tun!ate Rena$e Split Move '/!hange e) (dding a patition SQL- (lte ta%le student add patition pC values less than(@3). f) Dopping a patition Copy rights are reserved. 86 SQL- (lte ta%le student dop patition p@. g) Rena$ing a patition SQL- (lte ta%le student ena$e patition p4 to pD. h) Tun!ate a patition SQL- (lte ta%le student tun!ate patition pD. i) Splitting a patition SQL- (lte ta%le student split patition p1 at(2C) into (patition p12#patition p11). J) '/!hanging a patition SQL- (lte ta%le student e/!hange patition p2 with ta%le student1. &) Moving a patition SQL- (lte ta%le student $ove patition p12 ta%lespa!e saðMts. LIST A(RTITIONS a) Ceating list patitioned ta%le SQL- Ceate ta%le student(no nu$%e(1)#na$e va!ha(1)) patition %7 list(no) (patition p2 values(2#1#4#@#C)# patition p1 values(D#V#W#S#23)#patition p4 values(22#21#24#2@#2C)# patition p@ values(2D#2V#2W#2S#13)). %) Inseting e!ods into list patitioned ta%le SQL- Inset into student values(2#;a;). "" this will go to p2 SQL- Inset into student values(D#;%;). "" this will go to p1 SQL- Inset into student values(22#;!;). "" this will go to p4 SQL- Inset into student values(2D#;d;). "" this will go to p@ !) Retieving e!ods fo$ list patitioned ta%le SQL- Sele!t Efo$ student. SQL- Sele!t Efo$ student patition(p2). d) Aossi%le opeations with list patitions (dd Dop Tun!ate Rena$e Move '/!hange e) (dding a patition SQL- (lte ta%le student add patition pC values(12#11#14#1@#1C). f) Dopping a patition SQL- (lte ta%le student dop patition p@. g) Rena$ing a patition Copy rights are reserved. 87 SQL- (lte ta%le student ena$e patition p4 to pD. h) Tun!ate a patition SQL- (lte ta%le student tun!ate patition pD. i) '/!hanging a patition SQL- (lte ta%le student e/!hange patition p2 with ta%le student1. J) Moving a patition SQL- (lte ta%le student $ove patition p1 ta%lespa!e saðMts. :(S: A(RTITIONS a) Ceating hash patitioned ta%le SQL- Ceate ta%le student(no nu$%e(1)#na$e va!ha(1)) patition %7 hash(no) patitions C. :ee oa!le auto$ati!all7 gives patition na$es li&e S*SMA2 S*SMA1 S*SMA4 S*SMA@ S*SMAC %) Inseting e!ods into hash patitioned ta%le it will inset the e!ods %ased on hash fun!tion !al!ulated %7 ta&ing the patition &e7 SQL- Inset into student values(2#;a;). SQL- Inset into student values(D#;%;). SQL- Inset into student values(22#;!;). SQL- Inset into student values(2D#;d;). !) Retieving e!ods fo$ hash patitioned ta%le SQL- Sele!t Efo$ student. SQL- Sele!t Efo$ student patition(s7sMp2). d) Aossi%le opeations with hash patitions (dd Tun!ate Rena$e Move '/!hange e) (dding a patition SQL- (lte ta%le student add patition pD . f) Rena$ing a patition SQL- (lte ta%le student ena$e patition pD to pV. Copy rights are reserved. 88 g) Tun!ate a patition SQL- (lte ta%le student tun!ate patition pV. h) '/!hanging a patition SQL- (lte ta%le student e/!hange patition s7sMp2 with ta%le student1. i) Moving a patition SQL- (lte ta%le student $ove patition s7sMp1 ta%lespa!e saðMts. SU)"A(RTITIONS 6IT: R(N8' (ND :(S: Su%patitions !lause is used %7 hash onl75 6e !an not !eate su%patitions with list and hash patitions5 a) Ceating su%patitioned ta%le SQL- Ceate ta%le student(no nu$%e(1)#na$e va!ha(1)#$a&s nu$%e(4)) Aatition %7 ange(no) su%patition %7 hash(na$e) su%patitions 4 (Aatition p2 values less than(23)#patition p1 values less than(13)).
This will !eate two patitions p2 and p1 with thee su%patitions fo ea!h patition A2 \ S*SMSU)A2 S*SMSU)A1 S*SMSU)A4 A1 \ S*SMSU)A@ S*SMSU)AC S*SMSU)AD EE if 7ou ae using $a/value fo the last patition# 7ou !an not add a patition5 %) Inseting e!ods into su%patitioned ta%le SQL- Inset into student values(2#;a;). "" this will go to p2 SQL- Inset into student values(22#;%;). "" this will go to p1 !) Retieving e!ods fo$ su%patitioned ta%le SQL- Sele!t Efo$ student. SQL- Sele!t Efo$ student patition(p2). SQL- Sele!t Efo$ student su%patition(s7sMsu%p2). d) Aossi%le opeations with su%patitions (dd Dop Tun!ate Rena$e Split e) (dding a patition SQL- (lte ta%le student add patition p4 values less than(43). Copy rights are reserved. 89 f) Dopping a patition SQL- (lte ta%le student dop patition p4. g) Rena$ing a patition SQL- (lte ta%le student ena$e patition p1 to p4. h) Tun!ate a patition SQL- (lte ta%le student tun!ate patition p2. i) Splitting a patition SQL- (lte ta%le student split patition p4 at(2C) into (patition p42#patition p41). D(T( MOD'L (LLMINDMA(RTITIONS (LLMINDMSU)A(RTITIONS (LLMT()MA(RTITIONS (LLMT()MSU)A(RTITIONS D)(MINDMA(RTITIONS D)(MINDMSU)A(RTITIONS D)(MT()MA(RTITIONS D)(MT()MSU)A(RTITIONS US'RMINDMA(RTITIONS US'RMINDMSU)A(RTITIONS US'RMT()MA(RTITIONS US'RMT()MSU)A(RTITIONS 8ROUA )* (ND :(9IN8 8ROUA )* Using goup %7# we !an !eate goups of elated info$ation5 Colu$ns used in sele!t $ust %e used with goup %7# othewise it was not a goup %7 e/pession5 Copy rights are reserved. 90 '/0 SQL- sele!t deptno# su$(sal) fo$ e$p goup %7 deptno. D'ATNO SUM(S(L) """""""""" """""""""" 23 WVC3 13 23WVC 43 S@33 SQL- sele!t deptno#Jo%#su$(sal) fo$ e$p goup %7 deptno#Jo%. D'ATNO >O) SUM(S(L) """""""""" """"""""" """""""""" 23 CL'RF 2433 23 M(N(8'R 1@C3 23 AR'SID'NT C333 13 (N(L*ST D333 13 CL'RF 2S33 13 M(N(8'R 1SVC 43 CL'RF SC3 43 M(N(8'R 1WC3 43 S(L'SM(N CD33 :(9IN8 This will wo& as whee !lause whi!h !an %e used onl7 with goup %7 %e!ause of a%sen!e of whee !lause in goup %75 '/0 SQL- sele!t deptno#Jo%#su$(sal) tsal fo$ e$p goup %7 deptno#Jo% having su$(sal) - 4333. D'ATNO >O) TS(L """""""""" """"""""" """""""""" 23 AR'SID'NT C333 13 (N(L*ST D333 43 S(L'SM(N CD33 SQL- sele!t deptno#Jo%#su$(sal) tsal fo$ e$p goup %7 deptno#Jo% having su$(sal) - Copy rights are reserved. 91 4333 ode %7 Jo%.
D'ATNO >O) TS(L """""""""" """"""""" """""""""" 13 (N(L*ST D333 23 AR'SID'NT C333 43 S(L'SM(N CD33 ORD'R OB '+'CUTION 8oup the ows togethe %ased on goup %7 !lause5 Cal!ulate the goup fun!tions fo ea!h goup5 Choose and eli$inate the goups %ased on the having !lause5 Ode the goups %ased on the spe!ified !olu$n5 ROLLUA 8ROUAIN8 CU)' These ae the enhan!e$ents to the goup %7 featue5 USIN8 ROLLUA This will give the salaies in ea!h depat$ent in ea!h Jo% !atego7 along wih the total sala7 fo individual depat$ents and the total sala7 of all the depat$ents5 SQL- Sele!t deptno#Jo%#su$(sal) fo$ e$p goup %7 ollup(deptno#Jo%). D'ATNO >O) SUM(S(L) """""""""" """"""""" """""""""" 23 CL'RF 2433 Copy rights are reserved. 92 23 M(N(8'R 1@C3 23 AR'SID'NT C333 23 WVC3 13 (N(L*ST D333 13 CL'RF 2S33 13 M(N(8'R 1SVC 13 23WVC 43 CL'RF SC3 43 M(N(8'R 1WC3 43 S(L'SM(N CD33 43 S@33 1S31C USIN8 8ROUAIN8 In the a%ove Uue7 it will give the total sala7 of the individual depat$ents %ut with a %lan& in the Jo% !olu$n and gives the total sala7 of all the depat$ents with %lan&s in deptno and Jo% !olu$ns5
To epla!e these %lan&s with 7ou desied sting gouping will %e used SQL- sele!t de!ode(gouping(deptno)#2#=(ll Depts=#deptno)#de!ode(gouping(Jo%)#2#=(ll Jo%s=#Jo%)#su$(sal) fo$ e$p goup %7 ollup(deptno#Jo%). D'COD'(8ROUAIN8(D'ATNO)#2#=(LLD'ATS=#D'A D'COD'(8R SUM(S(L) """"""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""" """""""""""""" 23 CL'RF 2433 23 M(N(8'R 1@C3 23 AR'SID'NT C333 23 (ll Jo%s WVC3 13 (N(L*ST D333 13 CL'RF 2S33 13 M(N(8'R 1SVC 13 (ll Jo%s 23WVC 43 CL'RF SC3 43 M(N(8'R 1WC3 43 S(L'SM(N CD33 43 (ll Jo%s S@33 (ll Depts (ll Jo%s 1S31C Copy rights are reserved. 93 8ouping will etun 2 if the !olu$n whi!h is spe!ified in the gouping fun!tion has %een used in ollup5 8ouping will %e used in asso!iation with de!ode5 USIN8 CU)' This will give the salaies in ea!h depat$ent in ea!h Jo% !atego7# the total sala7 fo individual depat$ents# the total sala7 of all the depat$ents and the salaies in ea!h Jo% !atego75
SQL- sele!t de!ode(gouping(deptno)#2#;(ll Depts;#deptno)#de!ode(gouping(Jo%)#2#;(ll >o%s;#Jo%)#su$(sal) fo$ e$p goup %7 !u%e(deptno#Jo%). D'COD'(8ROUAIN8(D'ATNO)#2#=(LLD'ATS=#D'A D'COD'(8R SUM(S(L) """"""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""" """""""""""" 23 CL'RF 2433 23 M(N(8'R 1@C3 23 AR'SID'NT C333 23 (ll >o%s WVC3 13 (N(L*ST D333 13 CL'RF 2S33 13 M(N(8'R 1SVC 13 (ll >o%s 23WVC 43 CL'RF SC3 43 M(N(8'R 1WC3 43 S(L'SM(N CD33 43 (ll >o%s S@33 (ll Depts (N(L*ST D333 (ll Depts CL'RF @2C3 (ll Depts M(N(8'R W1VC (ll Depts AR'SID'NT C333 (ll Depts S(L'SM(N CD33 (ll Depts (ll >o%s 1S31C Copy rights are reserved. 94 S'T OA'R(TORS T*A'S Union Union all Intese!t Minus UNION This will !o$%ine the e!ods of $ultiple ta%les having the sa$e stu!tue5 '/0 SQL- sele!t E fo$ student2 union sele!t E fo$ student1. UNION (LL This will !o$%ine the e!ods of $ultiple ta%les having the sa$e stu!tue %ut in!luding dupli!ates5 '/0 SQL- sele!t E fo$ student2 union all sele!t E fo$ student1. INT'RS'CT Copy rights are reserved. 95 This will give the !o$$on e!ods of $ultiple ta%les having the sa$e stu!tue5 '/0 SQL- sele!t E fo$ student2 intese!t sele!t E fo$ student1. MINUS This will give the e!ods of a ta%le whose e!ods ae not in othe ta%les having the sa$e stu!tue5 '/0 SQL- sele!t E fo$ student2 $inus sele!t E fo$ student1. Copy rights are reserved. 96 9I'6S ( view is a data%ase o%Je!t that is a logi!al epesentation of a ta%le5 It is deliveed fo$ a ta%le %ut has no stoage of its own and often $a7 %e used in the sa$e $anne as a ta%le5 ( view ta&es the output of the Uue7 and teats it as a ta%le# theefoe a view !an %e thought of as a stoed Uue7 o a vitual ta%le5 T*A'S Si$ple view Co$ple/ view Si$ple view !an %e !eated fo$ one ta%le whee as !o$ple/ view !an %e !eated fo$ $ultiple ta%les5 6:* 9I'6S[ Aovides additional level of se!uit7 %7 esti!ting a!!ess to a pedete$ined set of ows and?o !olu$ns of a ta%le5 :ide the data !o$ple/it75 Si$plif7 !o$$ands fo the use5 9I'6S 6IT:OUT DML Read onl7 view 9iew with goup %7 9iew with aggegate fun!tions 9iew with ownu$ Aatition view 9iew with distin!t '/0 SQL- Ceate view deptMv as sele!t Efo$ dept with ead onl7. SQL- Ceate view deptMv as sele!t deptno# su$(sal) tMsal fo$ e$p goup %7 deptno. Copy rights are reserved. 97 SQL- Ceate view stud as sele!t ownu$ no# na$e# $a&s fo$ student. SQL- Ceate view student as sele!t Efo$ student2 union sele!t Efo$ student1. SQL- Ceate view stud as sele!t distin!t no#na$e fo$ student. 9I'6S 6IT: DML 9iew with not null !olu$n "" inset with out not null !olu$n not possi%le "" update not null !olu$n to null is not possi%le "" delete possi%le 9iew with out not null !olu$n whi!h was in %ase ta%le "" inset not possi%le "" update# delete possi%le 9iew with e/pession "" inset # update not possi%le "" delete possi%le 9iew with fun!tions (e/!ept aggegate) "" inset# update not possi%le "" delete possi%le 9iew was !eated %ut the undel7ing ta%le was dopped then we will get the $essage li&e P view has eos Q5 9iew was !eated %ut the %ase ta%le has %een alteed %ut still the view was with the initial definition# we have to epla!e the view to affe!t the !hanges5 Co$ple/ view (view with $oe than one ta%le) "" inset not possi%le "" update# delete possi%le (not alwa7s) CR'(TIN8 9I'6 6IT:OUT :(9IN8 T:' )(S' T()L' SQL- Ceate fo!e view stud as sele!t EBo$ student. "" On!e the %ase ta%le was !eated then the view is validated5 9I'6 6IT: C:'CF OATION CONSTR(INT SQL- Ceate view stud as sele!t Efo$ student whee $a&s H C33 with !he!& option !onstaint C&. " Inset possi%le with $a&s value as C33 " Update possi%le e/!luding $a&s !olu$n " Delete possi%le DROAAIN8 9I'6S SQL- dop view deptMv. Copy rights are reserved. 98 D(T( MOD'L (LLM9I'6 D)(M9I'6 US'RM9I'6S S*NON*M (ND S'QU'NC' S*NON*M ( s7non7$ is a data%ase o%Je!t# whi!h is used as an alias fo a ta%le# view o seUuen!e5 T*A'S Aivate Copy rights are reserved. 99 Au%li! Aivate s7non7$ is availa%le to the pati!ula use who !eates5 Au%li! s7non7$ is !eated %7 D)( whi!h is availa%le to all the uses5 (D9(NT(8'S :ide the na$e and owne of the o%Je!t5 Aovides lo!ation tanspaen!7 fo e$ote o%Je!ts of a disti%uted data%ase5 CR'(T' (ND DROA SQL- !eate s7non7$ s2 fo e$p. SQL- !eate pu%li! s7non7$ s1 fo e$p. SQL- dop s7non7$ s2. S'QU'NC' ( seUuen!e is a data%ase o%Je!t# whi!h !an geneate uniUue# seUuential intege values5 It !an %e used to auto$ati!all7 geneate pi$a7 &e7 o uniUue &e7 values5 ( seUuen!e !an %e eithe in an as!ending o des!ending ode5 S7nta/0 Ceate seUuen!e ,!e._name- Nin!e$ent %t7 nO Nstat with nO N$a/value nO N$invalue nO N!7!le?no!7!leO N!a!he?no!a!heO. )7 defalult the seUuen!e stats with 2# in!e$ents %7 2 with $invalue of 2 and with no!7!le# no!a!he5 Ca!he option pe"alloo!ates a set of seUuen!e nu$%es and etains the$ in $e$o7 fo faste a!!ess5 '/0 SQL- !eate seUuen!e s. SQL- !eate seUuen!e s in!e$ent %7 23 stat with 233 $invalue C $a/value 133 !7!le !a!he 13. USIN8 S'QU'NC' SQL- !eate ta%le student(no nu$%e(1)#na$e va!ha(23)). SQL- inset into student values(s5ne/tval# Ksað). Copy rights are reserved. 100 Initiall7 !uval is not defined and ne/tval is stating value5 (fte that ne/tval and !uval ae alwa7s eUual5 CR'(TIN8 (LA:("NUM'RIC S'QU'NC'
SQL- !eate seUuen!e s stat with 22214@. SQL- Inset into student values (s5ne/tval XX tanslate (s5ne/tval#;214@CDVWS3;#;a%!defghiJ;)). (LT'RIN8 S'QU'NC' 6e !an alte the seUuen!e to pefo$ the following5 Set o eli$inate $invalue o $a/value5 Change the in!e$ent value5 Change the nu$%e of !a!hed seUuen!e nu$%es5 '/0 SQL- alte seUuen!e s $invalue C. SQL- alte seUuen!e s in!e$ent %7 1. SQL- alte seUuen!e s !a!he 23. DROAAIN8 S'QU'NC' SQL- dop seUuen!e s. >OINS The pupose of a Join is to !o$%ine the data a!oss ta%les5 ( Join is a!tuall7 pefo$ed %7 the whee !lause whi!h !o$%ines the spe!ified ows of ta%les5 If a Join involves in $oe than two ta%les then oa!le Joins fist two ta%les %ased on the Joins !ondition and then !o$paes the esult with the ne/t ta%le and so on5 T*A'S 'Uui Join Non"eUui Join Self Join Natual Join Coss Join Oute Join Copy rights are reserved. 101 Left oute Right oute Bull oute Inne Join Using !lause On !lause (ssu$e that we have the following ta%les5 SQL- sele!t E fo$ dept. D'ATNO DN(M' LOC """""" """""""""" """""""""" 23 $&t h7d 13 fin %ang 43 h %o$%a7 SQL- sele!t E fo$ e$p. 'MANO 'N(M' >O) M8R D'ATNO """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st @@@ 23 111 sudha !le& 444 13 444 Jagan $anage 222 23 @@@ $adhu enginee 111 @3 'QUI >OIN ( Join whi!h !ontains an KH; opeato in the Joins !ondition5 '/0 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p e#dept d whee e5deptnoHd5deptno. 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d Copy rights are reserved. 102 444 Jagan $anage $&t h7d 111 sudha !le& fin %ang USIN8 CL(US' SQL- sele!t e$pno#ena$e#Jo% #dna$e#lo! fo$ e$p e Join dept d using(deptno). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Jagan $anage $&t h7d 111 sudha !le& fin %ang ON CL(US' SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p e Join dept d on(e5deptnoHd5deptno). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Jagan $anage $&t h7d 111 sudha !le& fin %ang NON"'QUI >OIN ( Join whi!h !ontains an opeato othe than KH; in the Joins !ondition5 '/0 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p e#dept d whee e5deptno - d5deptno. 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 111 sudha !le& $&t h7d @@@ $adhu enginee $&t h7d @@@ $adhu enginee fin %ang @@@ $adhu enginee h %o$%a7 S'LB >OIN Copy rights are reserved. 103 >oining the ta%le itself is !alled self Join5 '/0 SQL- sele!t e25e$pno#e15ena$e#e25Jo%#e15deptno fo$ e$p e2#e$p e1 whee e25e$pnoHe15$g. 'MANO 'N(M' >O) D'ATNO """""""""" """""""""" """""""""" """""""""" 222 Jagan anal7st 23 111 $adhu !le& @3 444 sudha $anage 13 @@@ sað enginee 23 N(TUR(L >OIN Natual Join !o$paes all the !o$$on !olu$ns5 '/0 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p natual Join dept. 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Jagan $anage $&t h7d 111 sudha !le& fin %ang CROSS >OIN This will gives the !oss podu!t5 '/0 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p !oss Join dept. 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 111 sudha !le& $&t h7d 444 Jagan $anage $&t h7d @@@ $adhu enginee $&t h7d 222 sað anal7st fin %ang Copy rights are reserved. 104 111 sudha !le& fin %ang 444 Jagan $anage fin %ang @@@ $adhu enginee fin %ang 222 sað anal7st h %o$%a7 111 sudha !le& h %o$%a7 444 Jagan $anage h %o$%a7 @@@ $adhu enginee h %o$%a7 OUT'R >OIN Oute Join gives the non"$at!hing e!ods along with $at!hing e!ods5 L'BT OUT'R >OIN This will displa7 the all $at!hing e!ods and the e!ods whi!h ae in left hand side ta%le those that ae not in ight hand side ta%le5 '/0 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p e left oute Join dept d on(e5deptnoHd5deptno). O SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p e#dept d whee e5deptnoHd5deptno(G). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Jagan $anage $&t h7d 111 sudha !le& fin %ang @@@ $adhu enginee RI8:T OUT'R >OIN This will displa7 the all $at!hing e!ods and the e!ods whi!h ae in ight hand side ta%le those that ae not in left hand side ta%le5 '/0 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p e ight oute Join dept d on(e5deptnoHd5deptno). O Copy rights are reserved. 105 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p e#dept d whee e5deptno(G) H d5deptno. 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Jagan $anage $&t h7d 111 sudha !le& fin %ang h %o$%a7 BULL OUT'R >OIN This will displa7 the all $at!hing e!ods and the non"$at!hing e!ods fo$ %oth ta%les5 '/0 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p e full oute Join dept d on(e5deptnoHd5deptno). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 444 Jagan $anage $&t h7d 222 sað anal7st $&t h7d 111 sudha !le& fin %ang @@@ $adhu enginee h %o$%a7 INN'R >OIN This will displa7 all the e!ods that have $at!hed5 '/0 SQL- sele!t e$pno#ena$e#Jo%#dna$e#lo! fo$ e$p inne Join dept using(deptno). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Jagan $anage $&t h7d 111 sudha !le& fin %ang Copy rights are reserved. 106 SU)QU'RI'S (ND '+ISTS SU)QU'RI'S Nesting of Uueies# one within the othe is te$ed as a su%Uue75 ( state$ent !ontaining a su%Uue7 is !alled a paent Uue75 Su%Uueies ae used to etieve data fo$ ta%les that depend on the values in the ta%le itself5 T*A'S Single ow su%Uueies Multi ow su%Uueies Multiple su%Uueies Coelated su%Uueies SIN8L' RO6 SU)QU'RI'S In single ow su%Uue7# it will etun one value5 '/0 SQL- sele!t E fo$ e$p whee sal - (sele!t sal fo$ e$p whee e$pno H VCDD). 'MANO 'N(M' >O) M8R :IR'D(T' S(L COMM D'ATNO """""""""" """""""""" """"""""" """""""""" """""""""""" """"""" """""""""" """""""""" VVWW SCOTT (N(L*ST VCDD 2S"(AR"WV 4333 13 VW4S FIN8 AR'SID'NT 2V"NO9"W2 C333 23 VS31 BORD (N(L*ST VCDD 34"D'C"W2 4333 13 MULTI RO6 SU)QU'RI'S In $ulti ow su%Uue7# it will etun $oe than one value5 In su!h !ases we should in!lude opeatos li&e an7# all# in o not in %etween the !o$paision opeato and the su%Uue75 '/0 SQL- sele!t E fo$ e$p whee sal - an7 (sele!t sal fo$ e$p whee sal %etween 1C33 and @333). 'MANO 'N(M' >O) M8R :IR'D(T' S(L COMM D'ATNO Copy rights are reserved. 107 """""""""" """""""""" """"""""" """""""""" """"""""""" """""""" """""""""" """""""""" VCDD >ON'S M(N(8'R VW4S 31"(AR"W2 1SVC 13 VVWW SCOTT (N(L*ST VCDD 2S"(AR"WV 4333 13 VW4S FIN8 AR'SID'NT 2V"NO9"W2 C333 23 VS31 BORD (N(L*ST VCDD 34"D'C"W2 4333 13 SQL- sele!t E fo$ e$p whee sal - all (sele!t sal fo$ e$p whee sal %etween 1C33 and @333). 'MANO 'N(M' >O) M8R :IR'D(T' S(L COMM D'ATNO """""""""" """""""""" """"""""" """""""""" """"""""""""" """""" """""""""" """""""""" VW4S FIN8 AR'SID'NT 2V"NO9"W2 C333 23 MULTIAL' SU)QU'RI'S Thee is no li$it on the nu$%e of su%Uueies in!luded in a whee !lause5 It allows nesting of a Uue7 within a su%Uue75 '/0 SQL- sele!t E fo$ e$p whee sal H (sele!t $a/(sal) fo$ e$p whee sal , (sele!t $a/(sal) fo$ e$p)). 'MANO 'N(M' >O) M8R :IR'D(T' S(L COMM D'ATNO """""""""" """""""""" """"""""" """""""""" """""""""""" """"""" """""""""" """""""""" VVWW SCOTT (N(L*ST VCDD 2S"(AR"WV 4333 13 VS31 BORD (N(L*ST VCDD 34"D'C"W2 4333 13 CORR'L(T'D SU)QU'RI'S ( su%Uue7 is evaluated on!e fo the entie paent state$ent whee as a !oelated su%Uue7 is evaluated on!e fo eve7 ow po!essed %7 the paent state$ent5 '/0 SQL- sele!t distin!t deptno fo$ e$p e whee C ,H (sele!t !ount(ena$e) fo$ e$p whee e5deptno H deptno). D'ATNO """""""""" 13 43 Copy rights are reserved. 108 '+ISTS '/ists fun!tion is a test fo e/isten!e5 This is a logi!al test fo the etun of ows fo$ a Uue75 '/0 Suppose we want to displa7 the depat$ent nu$%es whi!h has $oe than @ e$plo7ees5 SQL- sele!t deptno#!ount(E) fo$ e$p goup %7 deptno having !ount(E) - @. D'ATNO COUNT(E) """"""""" """""""""" 13 C 43 D Bo$ the a%ove Uue7 !an 7ou want to displa7 the na$es of e$plo7ees[ SQL- sele!t deptno#ena$e# !ount(E) fo$ e$p goup %7 deptno#ena$e having !ount(E) - @. no ows sele!ted The a%ove Uue7 etuns nothing %e!ause !o$%ination of deptno and ena$e neve etun $oe than one !ount5 The solution is to use e/ists whi!h follows5
SQL- sele!t deptno#ena$e fo$ e$p e2 whee e/ists (sele!t E fo$ e$p e1 whee e25deptnoHe15deptno goup %7 e15deptno having !ount(e15ena$e) - @) ode %7 deptno#ena$e. D'ATNO 'N(M' """""""""" """""""""" 13 (D(MS 13 BORD 13 >ON'S 13 SCOTT 13 SMIT: 43 (LL'N 43 )L(F' Copy rights are reserved. 109 43 >(M'S 43 M(RTIN 43 TURN'R 43 6(RD NOT '+ISTS SQL- sele!t deptno#ena$e fo$ e$p e2 whee not e/ists (sele!t E fo$ e$p e1 whee e25deptnoHe15deptno goup %7 e15deptno having !ount(e15ena$e) - @) ode %7 deptno#ena$e. D'ATNO 'N(M' """"""""" """""""""" 23 CL(RF 23 FIN8 23 MILL'R 6(LFUA TR''S (ND INLIN' 9I'6 6(LFUA TR''S Using hiea!hi!al Uueies# 7ou !an etieve data %ased on a natual hiea!hi!al elationship %etween ows in a ta%le5 :oweve# whee a hiea!hi!al elationship e/ists %etween the ows of a ta%le# a po!ess !alled tee wal&ing ena%les the hiea!h7 to %e !onstu!ted5 '/0 SQL- sele!t ena$e XX =HH-= XX pio ena$e# level fo$ e$p stat with ena$e H =FIN8= !onne!t %7 pio e$pnoH$g.
'N(M'XX=HH-=XXARIOR'N(M L'9'L """""""""""""""""""""""""""""""""""" """""""" FIN8HH- 2 >ON'SHH-FIN8 1 Copy rights are reserved. 110 SCOTTHH->ON'S 4 (D(MSHH-SCOTT @ BORDHH->ON'S 4 SMIT:HH-BORD @ )L(F'HH-FIN8 1 (LL'NHH-)L(F' 4 6(RDHH-)L(F' 4 M(RTINHH-)L(F' 4 TURN'RHH-)L(F' 4 >(M'SHH-)L(F' 4 CL(RFHH-FIN8 1 MILL'RHH-CL(RF 4 In the a%ove Stat with !lause spe!ifies the oot ow of the ta%le5 Level pseudo !olu$n gives the 2 fo oot # 1 fo !hild and so on5 Conne!t %7 pio !lause spe!ifies the !olu$ns whi!h has paent"!hild elationship5 INLIN' 9I'6 OR TOA"N (N(L*SIS In the sele!t state$ent instead of ta%le na$e# epla!ing the sele!t state$ent is &nown as inline view5 '/0 SQL- Sele!t ena$e# sal# ownu$ an& fo$ (sele!t Efo$ e$p ode %7 sal). 'N(M' S(L R(NF """""""""" """""""""" """""""""" SMIT: W33 2 >(M'S SC3 1 (D(MS 2233 4 6(RD 21C3 @ M(RTIN 21C3 C MILL'R 2433 D TURN'R 2C33 V (LL'N 2D33 W CL(RF 1@C3 S )L(F' 1WC3 23 >ON'S 1SVC 22 Copy rights are reserved. 111 SCOTT 4333 21 BORD 4333 24 FIN8 C333 2@ LOCFS Lo!&s ae the $e!hanis$s used to pevent destu!tive intea!tion %etween uses a!!essing sa$e esou!e si$ultaneousl75 Lo!&s povides high degee of data !on!uen!75 T*A'S Row level lo!&s Ta%le level lo!&s RO6 L'9'L LOCFS In the ow level lo!& a ow is lo!&ed e/!lusivel7 so that othe !annot $odif7 the ow until the tansa!tion holding the lo!& is !o$$itted o olled %a!&5 This !an %e done %7 using sele!t55fo update !lause5 '/0 SQL- sele!t E fo$ e$p whee sal - 4333 fo update of !o$$5. T()L' L'9'L LOCFS ( ta%le level lo!& will pote!t ta%le data thee%7 guaanteeing data integit7 when data is %eing a!!essed !on!uentl7 %7 $ultiple uses5 ( ta%le lo!& !an %e held in seveal $odes5 Shae lo!& Copy rights are reserved. 112 Shae update lo!& '/!lusive lo!& S:(R' LOCF ( shae lo!& lo!&s the ta%le allowing othe uses to onl7 Uue7 %ut not inset# update o delete ows in a ta%le5 Multiple uses !an pla!e shae lo!&s on the sa$e esou!e at the sa$e ti$e5 '/0 SQL- lo!& ta%le e$p in shae $ode. S:(R' UAD(T' LOCF It lo!&s ows that ae to %e updated in a ta%le5 It pe$its othe uses to !on!uentl7 Uue7# inset # update o even lo!& othe ows in the sa$e ta%le5 It pevents the othe uses fo$ updating the ow that has %een lo!&ed5 '/0 SQL- lo!& ta%le e$p in shae update $ode. '+CLUSI9' LOCF '/!lusive lo!& is the $ost esti!tive of ta%les lo!&s5 6hen issued %7 an7 use# it allows the othe use to onl7 Uue75 It is si$ila to shae lo!& %ut onl7 one use !an pla!e e/!lusive lo!& on a ta%le at a ti$e5 '/0 SQL- lo!& ta%le e$p in shae e/!lusive $ode. NO6(IT If one use lo!&ed the ta%le without nowait then anothe use t7ing to lo!& the sa$e ta%le then he has to wait until the use who has initiall7 lo!&ed the ta%le issues a !o$$it o oll%a!& state$ent5 This dela7 !ould %e avoided %7 appending a nowait !lause in the lo!& ta%le !o$$and5 '/0 SQL- lo!& ta%le e$p in e/!lusive $ode nowait5 D'(DLOCF Copy rights are reserved. 113 ( deadlo!& o!!us when tow uses have a lo!& ea!h on sepaate o%Je!t# and the7 want to a!Uuie a lo!& on the ea!h othe;s o%Je!t5 6hen this happens# the fist use has to wait fo the se!ond use to elease the lo!&# %ut the se!ond use will not elease it until the lo!& on the fist use;s o%Je!t is feed5 In su!h a !ase# oa!le dete!ts the deadlo!& auto$ati!all7 and solves the po%le$ %7 a%oting one of the two tansa!tions5 IND'+'S Inde/ is t7pi!all7 a listing of &e7wods a!!o$panied %7 the lo!ation of info$ation on a su%Je!t5 6e !an !eate inde/es e/pli!itl7 to speed up SQL state$ent e/e!ution on a ta%le5 The inde/ points die!tl7 to the lo!ation of the ows !ontaining the value5 6:* IND'+'S[ Inde/es ae $ost useful on lage ta%les# on !olu$ns that ae li&el7 to appea in whee !lauses as si$ple eUualit75 T*A'S UniUue inde/ Non"uniUue inde/ )tee inde/ )it$ap inde/ Co$posite inde/ Revese &e7 inde/ Bun!tion"%ased inde/ Des!ending inde/ Do$ain inde/ O%Je!t inde/ Cluste inde/ Te/t inde/ Inde/ oganiTed ta%le Aatition inde/ Lo!al inde/ Lo!al pefi/ed Lo!al non"pefi/ed 8lo%al inde/ Copy rights are reserved. 114 8lo%al pefi/ed 8lo%al non"pefi/ed UNIQU' IND'+ UniUue inde/es guaantee that no two ows of a ta%le have dupli!ate values in the !olu$ns that define the inde/5 UniUue inde/ is auto$ati!all7 !eated when pi$a7 &e7 o uniUue !onstaint is !eated5 '/0 SQL- !eate uniUue inde/ studMind on student(sno). NON"UNIQU' IND'+ Non"UniUue inde/es do not i$pose the a%ove esti!tion on the !olu$n values5 '/0 SQL- !eate inde/ studMind on student(sno). )TR'' IND'+ o (SC'NDIN8 IND'+ The default t7pe of inde/ used in an oa!le data%ase is the %tee inde/5 ( %tee inde/ is designed to povide %oth apid a!!ess to individual ows and Uui!& a!!ess to goups of ows within a ange5 The %tee inde/ does this %7 pefo$ing a su!!ession of value !o$paisons5 'a!h !o$paison eli$inates $an7 of the ows5 '/0 SQL- !eate inde/ studMind on student(sno). )ITM(A IND'+ This !an %e used fo low !adinalit7 !olu$ns0 that is !olu$ns in whi!h the nu$%e of distin!t values is snall when !o$paed to the nu$%e of the ows in the ta%le5 '/0 SQL- !eate %it$ap inde/ studMind on student(se/). COMAOSIT' IND'+ Copy rights are reserved. 115 ( !o$posite inde/ also !alled a !on!atenated inde/ is an inde/ !eated on $ultiple !olu$ns of a ta%le5 Colu$ns in a !o$posite inde/ !an appea in an7 ode and need not %e adJa!ent !olu$ns of the ta%le5 '/0 SQL- !eate %it$ap inde/ studMind on student(sno# sna$e). R'9'RS' F'* IND'+ ( evese &e7 inde/ when !o$paed to standad inde/# eveses ea!h %7te of the !olu$n %eing inde/ed while &eeping the !olu$n ode5 6hen the !olu$n is inde/ed in evese $ode then the !olu$n values will %e stoed in an inde/ in diffeent %lo!&s as the stating value diffes5 Su!h an aange$ent !an help avoid pefo$an!e degadations in inde/es whee $odifi!ations to the inde/ ae !on!entated on a s$all set of %lo!&s5 '/0 SQL- !eate inde/ studMind on student(sno# evese). 6e !an e%uild a evese &e7 inde/ into no$al inde/ using the noevese &e7wod5 '/0 SQL- alte inde/ studMind e%uild noevese. BUNCTION )(S'D IND'+ This will use esult of the fun!tion as &e7 instead of using !olu$n as the value fo the &e75 '/0 SQL- !eate inde/ studMind on student(uppe(sna$e)). D'SC'NDIN8 IND'+ The ode used %7 )"tee inde/es has %een as!ending ode5 *ou !an !ategoiTe data in )" tee inde/ in des!ending ode as well5 This featue !an %e useful in appli!ations whee soting opeations ae eUuied5 Copy rights are reserved. 116 '/0 SQL- !eate inde/ studMind on student(sno des!). T'+T IND'+ Que7ing te/t is diffeent fo$ Uue7ing data %e!ause wods have shades of $eaning# elationships to othe wods# and opposites5 *ou $a7 want to sea!h fo wods that ae nea ea!h othe# o wods that ae elated to thes5 These Uueies would %e e/te$el7 diffi!ult if all 7ou had availa%le was the standad elational opeatos5 )7 e/tending SQL to in!lude te/t inde/es# oa!le te/t pe$its 7ou to as& ve7 !o$ple/ Uuestions a%out the te/t5 To use oa!le te/t# 7ou need to !eate a te(t inde( on the !olu$n in whi!h the te/t is stoed5 Te/t inde/ is a !olle!tion of ta%les and inde/es that stoe info$ation a%out the te/t stoed in the !olu$n5 T*A'S Thee ae seveal diffeent t7pes of inde/es availa%le in oa!le Si5 The fist# CONT'+T is suppoted in oa!le Wi as well as oa!le Si5 (s of oa!le Si# 7ou !an use the CT+C(T te/t inde/ fo futhe enhan!e 7ou te/t inde/ $anage$ent and Uue7 !apa%ilities5 CONT'+T CT+C(T CT+RUL' The CT+C(T inde/ t7pe suppots the tansa!tional s7n!honiTation of data %etween the %ase ta%le and its te/t inde/5 6ith CONT'+T inde/es# 7ou need to $anuall7 tell oa!le to update the values in the te/t inde/ afte data !hanges in %ase ta%le5 CT+C(T inde/ t7pes do not geneate s!oe values duing the te/t Uueies5 :O6 TO CR'(T' T'+T IND'+[ *ou !an !eate a te/t inde/ via a spe!ial vesion of the !eate inde/ !o$$an5 Bo !onte/t inde/# spe!if7 the !t/s7s5!onte/t inde/ t7pe and fo !t/!at inde/# spe!if7 the !t/s7s5!t/!at inde/ t7pe5 '/0 Suppose 7ou have a ta%le !alled )OOFS with the following !olu$ns Title# (utho# Info5 Copy rights are reserved. 117 SQL- !eate inde/ %oo&Minde/ on %oo&s(info) inde/t7pe is !t/s7s5!onte/t. SQL- !eate inde/ %oo&Minde/ on %oo&s(info) inde/t7pe is !t/s7s5!t/!at. T'+T QU'RI'S On!e a te/t inde/ is !eated on the info !olu$n of )OOFS ta%le# te/t"sea!hing !apa%ilities in!ease d7na$i!all75 CONT(INS < C(TS'(RC: CONT(INS fun!tion ta&es two paa$etes \ the !olu$n na$e and the sea!h sting5 S7nta/0 Contains(inde(ed_column, !earc)_!tr). If 7ou !eate a CT+C(T inde/# use the C(TS'(RC: fun!tion in pla!e of CONT(INS5 C(TS'(RC: ta&es thee paa$etes \ the !olu$n na$e# the sea!h sting and the inde/ set5 S7nta/0 Contains(inde(ed_column, !earc)_!tr, inde(_!et). :O6 ( T'+T Q'UR* 6ORFS[ 6hen a fun!tion su!h as CONT(INS o C(TS'(RC: is used in Uue7# the te/t potion of the Uue7 is po!essed %7 oa!le te/t5 The e$ainde of the Uue7 is po!essed Just li&e a egula Uue7 within the data%ase5 The esult of the te/t Uue7 po!essing and the egula Uue7 po!essing ae $eged to etun a single set of e!ods to the use5 S'(RC:IN8 BOR (N '+(CT M(TC: OB ( 6ORD The following Uueies will sea!h fo a wod !alled Kppet7; whose s!oe is geate than Teo5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7;# null) - 3. Suppose if 7ou want to &now the s!oe of the Kpopet7; in ea!h %oo&# if s!oe values fo individual sea!hes ange fo$ 3 to 23 fo ea!h o!!uen!e of the sting within the te/t then use the s!oe fun!tion5 SQL- sele!t title# s!oe(23) fo$ %oo&s whee !ontains(info# Kpopet7;# 23) - 3. Copy rights are reserved. 118 S'(RC:IN8 BOR (N '+(CT M(TC: OB MULTIAL' 6ORDS The following Uueies will sea!h fo two wods5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 (ND havests;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7 (ND havests;# null) - 3. Instead of using (ND 7ou !ould hae used an a$pesand(<)5 )efoe using this $ethod# set define off so the < !haa!te will not %e seen as pat of a vaia%le na$e5 SQL- set define off SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 < havests;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7 havests;# null) - 3. The following Uueies will sea!h fo $oe than two wods5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 (ND havests (ND wo&es;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7 havests wo&es;# null) - 3. The following Uueies will sea!h fo eithe of the two wods5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 OR havests;) - 3. Instead of OR 7ou !an use a veti!al line (X)5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 X havests;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7 X havests;# null) - 3. In the following Uueies the (CCUM(a!!u$ulate) opeato adds togethe the s!oes of the individual sea!hes and !o$paes the a!!u$ulated s!oe to the theshold value5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 (CCUM havests;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7 (CCUM havests;# null) - 3. Instead of OR 7ou !an use a !o$$a(#)5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 # havests;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7 # havests;# null) - 3. In the following Uueies the MINUS opeato su%ta!ts the s!oe of the se!ond te$;s sea!h fo$ the s!oe of the fist te$;s sea!h5 Copy rights are reserved. 119 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 MINUS havests;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7 NOT havests;# null) - 3. Instead of MINUS 7ou !an use \ and instead of NOT 7ou !an use ]5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kpopet7 " havests;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Kpopet7 ] havests;# null) - 3. S'(RC:IN8 BOR (N '+(CT M(TC: OB ( A:R(S' The following Uueies will sea!h fo the phase5 If the sea!h phase in!ludes a eseved wod within oa!le te/t# the 7ou $ust use !ul7 %a!es (^_) to en!lose te/t5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Ktansa!tions ^and_ finan!es;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# Ktansa!tions ^and_ finan!es;# null) - 3. *ou !an en!lose the entie phase within !ul7 %a!es# in whi!h !ase an7 eseved wods within the phase will %e teated as pat of the sea!h !iteia5 SQL- sele!t E fo$ %oo&s whee !ontains(info# K^tansa!tions and finan!es_;) - 3. SQL- sele!t E fo$ %oo&s whee !atsea!h(info# K^tansa!tions and finan!es_;# null) - 3. S'(RC:IN8 BOR 6ORDS T:(T (R' N'(R '(C: OT:'R The following Uueies will sea!h fo the wods that ae in %etween the sea!h te$s5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kwo&es N'(R havests;) - 3. Instead of N'(R 7ou !an use .5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Kwo&es . havests;) - 3. In CONT'+T inde/ Uueies# 7ou !an spe!if7 the $a/i$u$ nu$%e of wods %etween the sea!h te$s5 SQL- sele!t E fo$ %oo&s whee !ontains(info# KN'(R((wo&es# havests)#23); - 3. USIN8 6ILDC(RDS DURIN8 S'(RC:'S Copy rights are reserved. 120 *ou !an use wild!ads to e/pand the list of valid sea!h te$s used duing 7ou Uue75 >ust as in egula te/t"sting wild!ad po!essing# two wild!ads ae availa%le5 L " pe!ent sign. $ultiple"!haa!te wild!ad M " undes!oe. single"!haa!te wild!ad SQL- sele!t E fo$ %oo&s whee !ontains(info# Kwo&eL;) - 3. SQL- sele!t E fo$ %oo&s whee !ontains(info# Kwo&MMM;) - 3. S'(RC:IN8 BOR 6ORDS T:(T S:(R' T:' S(M' ST'M Rathe than using wild!ads# 7ou !an use ste$"e/pansion !apa%ilities to e/pand the list of te/t stings5 8iven the Kste$; of a wod# oa!le will e/pand the list of wods to sea!h fo to in!lude all wods having the sa$e ste$5 Sa$ple e/pansions ae show hee5 Ala7 " pla7s pla7ing pla7ed pla7ful SQL- sele!t E fo$ %oo&s whee !ontains(info# K`$anage;) - 3. S'(RC:IN8 BOR BUZZ* M(TC:'S ( fuTT7 $at!h e/pands the spe!ified sea!h te$ to in!lude wods that ae spelled si$ilal7 %ut that do not ne!essail7 have the sa$e wod ste$5 BuTT7 $at!hes ae $ost helpful when the te/t !ontains $isspellings5 The $isspellings !an %e eithe in the sea!hed te/t o in the sea!h sting spe!ified %7 the use duing the Uue75 The following Uueies will not etun an7thing %e!ause its sea!h does not !ontain the wod Khadest;5 SQL- sele!t E fo$ %oo&s whee !ontains(info# Khadest;) - 3. It does# howeve# !ontains the wod Khavest;5 ( fuTT7 $at!h will etun the %oo&s !ontaining the wod Khavest; even though Khavest; has a diffeent wod ste$ thant the wod used as the sea!h te$5 To use a fuTT7 $at!h# pe!ede the sea!h te$ with a Uuestion $a&# with no spa!e %etween the Uuestion $a& and the %eginning of the sea!h te$5 SQL- sele!t E fo$ %oo&s whee !ontains(info# K[hadest;) - 3. S'(RC:IN8 BOR 6ORDS T:(T SOUND LIF' OT:'R 6ORDS Copy rights are reserved. 121 SOUND'+# e/pands sea!h te$s %ased on how the wod sounds5 The SOUND'+ e/pansion $ethod uses the sa$e te/t"$at!hing logi! availa%le via the SOUND'+ fun!tion in SQL5 To use the SOUND'+ option# 7ou $ust pe!ede the sea!h te$ with an e/!la$ation $a&(I)5 SQL- sele!t E fo$ %oo&s whee !ontains(info# KIgate;) - 3. IND'+ S*NC:RONIZ(TION 6hen using CONT'+T inde/es# 7ou need to $anage the te/t inde/ !ontents. the te/t inde/es ae not updated when the %ase ta%le is updated5 6hen the ta%le was updated# its te/t inde/ is out of s7n! with the %ase ta%le5 To s7n! of the inde/# e/e!ute the S*NCMIND'+ po!edue of the CT+MDDL pa!&age5 SQL- e/e! CT+MDDL5S*NCMIND'+(K%oo&Minde/;). IND'+ S'TS :istoi!all7# po%le$s with Uueies of te/t inde/es have o!!ued when othe !iteia ae used alongside te/t sea!hes as pat of the whee !lause5 To i$pove the $i/ed Uue7 !apa%ilit7# oa!le featues inde/ sets5 The inde/es within the inde/ set $a7 %e stu!tued elational !olu$ns o on te/t !olu$ns5 To !eate an inde/ set# use the CT+MDDL pa!&age to !eate the inde/ set and add inde/es to it5 6hen 7ou !eate a te/t inde/# 7ou !an then spe!if7 the inde/ set it %elongs to5 SQL- e/e! CT+MDDL5CR'(T'MIND'+MS'T(K%oo&sMinde/Mset;). The add non"te/t inde/es5 SQL- e/e! CT+MDDL5(DDMIND'+(K%oo&sMinde/Mset;# KtitleMinde/;). Now !eate a CT+C(T te/t inde/5 Spe!if7 !t/s7s5!t/!at as the inde/ t7pe# and list the inde/ set in the paa$etes !lause5 SQL- !eate inde/ %oo&Minde/ on %oo&s(info) inde/t7pe is !t/s7s5!t/!at paa$etes(Kinde/ set %oo&sMinde/Mset;). IND'+"OR8(NIZ'D T()L' Copy rights are reserved. 122 (n inde/"oganiTed ta%le &eeps its data soted a!!oding to the pi$a7 &e7 !olu$n values fo the ta%le5 Inde/"oganiTed ta%les stoe thei data as if the entie ta%le was stoed in an inde/5 (n inde/"oganiTed ta%le allows 7ou to stoe the entie ta%le;s data in an inde/5 '/0 SQL- !eate ta%le student (sno nu$%e(1)#sna$e va!ha(23)#s$a&s nu$%e(4) !onstaint p& pi$a7 &e7(sno) oganiTation inde/. A(RTITION IND'+ Si$ila to patitioning ta%les# oa!le allows 7ou to patition inde/es too5 Li&e ta%le patitions# inde/ patitions !ould %e in diffeent ta%lespa!es5 LOC(L IND'+'S Lo!al &e7wod tells oa!le to !eate a sepate inde/ fo ea!h patition5 In the lo!al pefi/ed inde/ the patition &e7 is spe!ified on the left pefi/5 6hen the undel7ing ta%le is patitioned %aes on# sa7 two !olu$ns then the inde/ !an %e pefi/ed on the fist !olu$n spe!ified5 Lo!al pefi/ed inde/es !an %e uniUue o non uniUue5 Lo!al inde/es $a7 %e easie to $anage than glo%al inde/es5 '/0 SQL- !eate inde/ studMinde/ on student(sno) lo!al. 8LO)(L IND'+'S ( glo%al inde/ $a7 !ontain values fo$ $ultiple patitions5 (n inde/ is glo%al pefi/ed if it is patitioned on the left pefi/ of the inde/ !olu$ns5 The glo%al !lause allows 7ou to !eate a non"patitioned inde/5 8lo%al inde/es $a7 pefo$ uniUueness !he!&s faste than lo!al (patitioned) inde/es5 *ou !annot !eate glo%al inde/es fo hash patitions o su%patitions5 '/0 SQL- !eate inde/ studMinde/ on student(sno) glo%al. Copy rights are reserved. 123 Si$ila to ta%le patitions# it is possi%le to $ove the$ fo$ one devi!e to anothe5 )ut unli&e ta%le patitions# $ove$ent of inde/ patitions eUuies individual e!onstu!tion of the inde/ o ea!h patition (onl7 in the !ase of glo%al inde/)5 '/0 SQL- alte inde/ studMind e%uild patition p1 Inde/ patitions !annot %e dopped $anuall75 The7 ae dopped i$pli!itl7 when the data the7 efe to is dopped fo$ the patitioned ta%le5 MONITORIN8 US' OB IND'+'S On!e 7ou tuned on the $onitoing the use of inde/es# then we !an !he!& whethe the ta%le is hitting the inde/ o not5 To $onito the use of inde/ use the follwing s7nta/5 S7nta/0 alte inde/ inde(_name $onitoing usage. then !he!& fo the details in 9`O)>'CTMUS(8' view5 If 7ou want to stop $onitoing use the following5 S7nta/0 alte inde/ inde(_name no$onitoing usage. D(T( MOD'L (LLMIND'+'S D)(MIND'+'S US'RMIND'+'S (LLMIND"COLUMNS D)("INDMCOLUMNS US'RMINDMCOLUMNS (LLMA(RTMIND'+'S D)(MA(RTMIND'+'S Copy rights are reserved. 124 US'RMA(RTMIND'+'S 9`O)>'CTMUS(8' SQLEALUS COMMN(NDS These !o$$ands does not eUuie state$ent te$inato and appli!a%le to the sessions # those will %e auto$ati!all7 !leaed when session was !losed5 )R'(F Copy rights are reserved. 125 This will %e used to %ea&up the data depending on the gouping5 S7nta/0 )ea& o %e Non ,!olu$n_name- on epotO
COMAUT' This will %e used to pefo$ goup fun!tions on the data5 S7nta/0 Co$pute o !o$p NgoupMfun!tion of column_name on breain"_column_name o epotO TTITL' This will give the top title fo 7ou epot5 *ou !an on o off the ttitle5 S7nta/0 Ttitle o ttit Nleft X !ente X ightO title_name s&ip n ot)er_c)aracter! Ttitle o ttit Non o offO )TITL' This will give the %otto$ title fo 7ou epot5 *ou !an on o off the %title5 S7nta/0 )title o %tit Nleft X !ente X ightO title_name s&ip n ot)er_c)aracter! )title o %tit Non o offO '/0 SQL- %e on deptno s&ip 2 on epot SQL- !o$p su$ of sal on deptno SQL- !o$p su$ of sal on epot SQL- ttitle !ente ='MALO*'' D'T(ILS= s&ip2 !ente =""""""""""""""""= SQL- %title !ente =EE T:(NFQ EE= SQL- sele!t E fo$ e$p ode %7 deptno. Output0 'MALO*'' D'T(ILS Copy rights are reserved. 126 """"""""""""""""""""""" 'MANO 'N(M' >O) M8R :IR'D(T' S(L COMM D'ATNO """""""""" """""""""" """"""""" """"""" """""""""""""" """""""" """""""""" """""""""" VVW1 CL(RF M(N(8'R VW4S 3S">UN"W2 1@C3 23 VW4S FIN8 AR'SID'NT 2V"NO9"W2 C333 VS4@ MILL'R CL'RF VVW1 14">(N"W1 2433 """""""""" EEEEEEEEEE WVC3 su$ V4DS SMIT: CL'RF VS31 2V"D'C"W3 W33 13 VWVD (D(MS CL'RF VVWW 14"M(*"WV 2233 VS31 BORD (N(L*ST VCDD 34"D'C"W2 4333 VVWW SCOTT (N(L*ST VCDD 2S"(AR"WV 4333 VCDD >ON'S M(N(8'R VW4S 31"(AR"W2 1SVC """""""""" EEEEEEEEEE 23WVC su$ V@SS (LL'N S(L'SM(N VDSW 13"B')"W2 2D33 433 43 VDSW )L(F' M(N(8'R VW4S 32"M(*"W2 1WC3 VDC@ M(RTIN S(L'SM(N VDSW 1W"S'A"W2 21C3 2@33 VS33 >(M'S CL'RF VDSW 34"D'C"W2 SC3 VW@@ TURN'R S(L'SM(N VDSW 3W"S'A"W2 2C33 3 VC12 6(RD S(L'SM(N VDSW 11"B')"W2 21C3 C33 """""""""" EEEEEEEEEE S@33 su$ """""""""" su$ 1S31C EE T:(NFQ EE CL'(R This will !lea the e/isting %uffes o %ea& o !o$putations o !olu$ns fo$atting5 S7nta/0 Clea o !le %uffe X %e X !o$p X !ol. '/0 Copy rights are reserved. 127 SQL- !lea %uffe )uffe !leaed SQL- !lea %e )ea&s !leaed SQL- !lea !o$p Co$putes !leaed SQL- !lea !ol Colu$ns !leaed C:(N8' This will %e used to epla!e an7 stings in SQL state$ents5 S7nta/0 Change o !?old_!trin"?new_!trin" If the old_!trin" epeats $an7 ti$es then new_!trin" epla!es the fist sting onl75 '/0 SQL- sele!t E fo$ det. sele!t E fo$ det E 'RROR at line 20 OR("33S@10 ta%le o view does not e/ist SQL- !?det?dept 2E sele!t E fo$ dept SQL- ? D'ATNO DN(M' LOC """""""""" """""""""""""""" """"""""""" 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: (LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON COLUMN This will %e used to in!ease o de!ease the width of the ta%le !olu$ns5 Copy rights are reserved. 128 S7nta/0 Colu$n o !ol ,column_name- fo$at ,num_'ormatXte(t_'ormat- '/0 SQL- !ol deptno fo$at SSS SQL- !ol dna$e fo$at a23 S(9' This will %e used to save 7ou !uent SQL state$ent as SQL S!ipt file5 S7nta/0 Save o sav ,'ile_name-5Ne/tensionO epla!e o ep If 7ou want to save the filena$e with e/isting filena$e the 7ou have to use epla!e option5 )7 default it will ta&e !.l as the e/tension5 '/0 SQL- save ss Ceated file ss5sUl SQL- save ss epla!e 6ote file ss5sUl '+'CUT' This will %e used to e/e!ute stoed su%poga$s o pa!&aged su%poga$s5 S7nta/0 '/e!ute o e/e! ,!ubpro"ram_name- '/0 SQL- e/e! sa$pleMpo! SAOOL This will e!od the data when 7ou spool on# upto when 7ou sa7 spool off5 )7 default it will give l!t as e/tension5 S7nta/0 Copy rights are reserved. 129 Spool on X off X out X ,'ile_name-5N'/tensionO '/0 SQL- spool on SQL- sele!t E fo$ dept. D'ATNO DN(M' LOC """"""""" """""""""""""" """""""""" 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON SQL- spool off SQL- ed on5lst SQL- sele!t E fo$ dept. D'ATNO DN(M' LOC """"""""" """""""""""""" """""""""" 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON SQL- spool off LIST This will give the !uent SQL state$ent5 S7nta/0 List o li N!tart_line_numberO Nend_line_numberO '/0 SQL- sele!t 1 E 4 fo$ @ dept. SQL- list Copy rights are reserved. 130 2 sele!t 1 E 4 fo$ @E dept SQL- list 2 2E sele!t SQL- list 4 4E fo$ SQL- list 2 4 2 sele!t 1 E 4E fo$ INAUT This will inset the new line to the !uent SQL state$ent5 S7nta/0 Input o in ,!trin"- '/0 SQL- sele!t E SQL- list 2E sele!t E SQL- input fo$ dept SQL- list 2 sele!t E 1E fo$ dept (AA'ND This will adds a new sting to the e/isting sting in the SQL state$ent without an7 spa!e5 S7nta/0 (ppend o app ,!trin"- '/0 SQL- sele!t E SQL- list Copy rights are reserved. 131 2E sele!t E SQL- append fo$ dept 2E sele!t E fo$ dept SQL- list 2E sele!t E fo$ dept D'L'T' This will delete the !uent SQL state$ent lines5 S7nta/0 Delete o del ,!tart_line_number- N,end_line_number-O '/0 SQL- sele!t 1 E 4 fo$ @ dept C whee D deptno V -23. SQL- list 2 sele!t 1 E 4 fo$ @ dept C whee D deptno VE -23 SQL- del 2 SQL- list 2 E 1 fo$ 4 dept @ whee C deptno DE -23 SQL- del 1 SQL- list Copy rights are reserved. 132 2 E 1 dept 4 whee @ deptno CE -23 SQL- del 1 @ SQL- list 2 E 1E -23 SQL- del SQL- list 2 E 9(RI()L' This will %e used to de!lae a vaia%le5 S7nta/0 9aia%le o va ,variable_name- ,variable_type- '/0 SQL- va deptMna$e va!ha(2C) SQL- sele!t dna$e into deptMna$e fo$ dept whee deptno H 23. ARINT This will %e used to pint the output of the vaia%les that will %e de!laed at SQL level5 S7nta/0 Aint ,variable_name- '/0 SQL- pint deptMna$e D'ATMN(M' """""""""""""" (CCOUNTIN8 ST(RT Copy rights are reserved. 133 This will %e used to e/e!ute SQL s!ipts5 S7nta/0 stat ,filena$e_name-5sUl '/0 SQL- stat ss5sUl SQL- ass5sUl "" this will e/e!ute sUl s!ipt files onl75 :OST This will %e used to intea!t with the OS level fo$ SQL5 S7nta/0 :ost NoperationO '/0 SQL- host SQL- host di S:O6 Using this# 7ou !an see seveal !o$$ands that use the set !o$$and and status5 S7nta/0 Show all X ,!et_command- '/0 SQL- show all appinfo is OBB and set to bSQLEAlusb aa7siTe 2C auto!o$$it OBB autopint OBB autoe!ove7 OBB autota!e OBB %lo!&te$inato b5b (he/ 1e) %title OBB and is the fist few !haa!tes of the ne/t S'L'CT state$ent !$dsep OBB !olsep b b !o$pati%ilit7 vesion N(TI9' Copy rights are reserved. 134 !on!at b5b (he/ 1e) !op7!o$$it 3 COA*T*A'C:'CF is ON define b<b (he/ 1D) des!i%e D'AT: 2 LIN'NUM OBB IND'NT ON e!ho OBB editfile bafiedt5%ufb e$%edded OBB es!ape OBB B''D)(CF ON fo D o $oe ows flagge OBB flush ON SQL- sho veif7 veif7 OBB RUN This will uns the !o$$and in the %uffe5 S7nta/0 Run X ? '/0 SQL- un SQL- ? STOR' This will save all the set !o$$and statuses in a file5 S7nta/0 Stoe set ,filena$e-5Ne/tensionO N!eateO X Nepla!eO X NappendO '/0 SQL- stoe set $7Msettings5s!$d Ceated file $7Msettings5s!$d SQL- stoe set $7Msettings5!$d epla!e 6ote file $7Msettings5!$d SQL- stoe set $7Msettings5!$d append (ppended file to $7Msettings5!$d Copy rights are reserved. 135 BOLDM(BT'R This will fold the !olu$ns one afte the othe5 S7nta/0 Colu$n ,column_name- foldMafte Nno_o'_line!O '/0 SQL- !ol deptno foldMafte 2 SQL- !ol dna$e foldMafte 2 SQL- !ol lo! foldMafte 2 SQL- set heading off SQL- sele!t E fo$ dept. 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON BOLDM)'BOR' This will fold the !olu$ns one %efoe the othe5 S7nta/0 Colu$n ,column_name- foldM%efoe Nno_o'_line!O D'BIN' This will give the list of all the vaia%les !uentl7 defined5 Copy rights are reserved. 136 S7nta/0 Define Nvaia%leMna$eO '/0 SQL- define D'BIN' MD(T' H b2D"M(*"3Vb (C:(R) D'BIN' MCONN'CTMID'NTIBI'R H boa!leb (C:(R) D'BIN' MUS'R H bSCOTTb (C:(R) D'BIN' MARI9IL'8' H bb (C:(R) D'BIN' MSQLALUSMR'L'(S' H b2332333133b (C:(R) D'BIN' M'DITOR H bNotepadb (C:(R) D'BIN' MOM9'RSION H bOa!le Data%ase 23g 'ntepise 'dition Release 2352535153 \ Aodu!tion 6ith the Aatitioning# OL(A and Data Mining optionsb (C:(R) D'BIN' MOMR'L'(S' H b2332333133b (C:(R) S'T COMM(NDS These !o$$ands does not eUuie state$ent te$inato and appli!a%le to the sessions # those will %e auto$ati!all7 !leaed when session was !losed5 LIN'SIZ' This will %e used to set the linesiTe5 Default linesiTe is W35 S7nta/0 Set linesiTe ,value- '/0 SQL- set linesiTe 233 A(8'SIZ' This will %e used to set the pagesiTe5 Default pagesiTe is 2@5 S7nta/0 Set pagesiTe ,value- Copy rights are reserved. 137 '/0 SQL- set pagesiTe 43 D'SCRI)' This will %e used to see the o%Je!t;s stu!tue5 S7nta/0 Des!i%e o des! ,ob#ect_name- '/0 SQL- des! dept Na$e Null[ T7pe """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""" D'ATNO NOT NULL NUM)'R(1) DN(M' 9(RC:(R1(2@) LOC 9(RC:(R1(24) A(US' 6hen the displa7ed data !ontains hundeds o thousands of lines# when 7ou sele!t it then it will auto$ati!all7 s!olls and displa7s the last page data5 To pevent this 7ou !an use this pause option5 )7 using this it will displa7 the data !oespoinding to the pagesiTe with a %ea& whi!h will !ontinue %7 hitting the etun &e75 )7 default this will %e off5 S7nta/0 Set pause on X off '/0 SQL- set pause on B''D)(CF This will give the info$ation egading how$an7 ows 7ou sele!ted the o%Je!t5 )7 default the feed%a!& $essage will %e displa7ed# onl7 when the o%Je!t !ontains $oe than C ows5 S7nta/0 Set feed%a!& ,value- Copy rights are reserved. 138 '/0 SQL- set feed%a!& @ SQL- sele!t E fo$ dept. D'ATNO DN(M' LOC """""""""" """""""""""""" """"""""""""" 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON @ ows sele!ted5 :'(DIN8 If 7ou want to displa7 data without headings# then 7ou !an a!hieve with this5 )7 default heading is on5 S7nta/0 Set heading on X off '/0 SQL- set heading off SQL- sele!t E fo$ dept. 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON S'R9'ROUTAUT This will %e used to displa7 the output of the AL?SQL poga$s5 )7 default this will %e off5 S7nta/0 Set seveoutput on X off '/0 Copy rights are reserved. 139 SQL- set seveoutput on TIM' This will %e used to displa7 the ti$e5 )7 default this will %e off5 S7nta/0 Set ti$e on X off '/0 SQL- set ti$e on 2S0CD044 SQL- TIMIN8 This will give the ti$e ta&en to e/e!ute the !uent SQL state$ent5 )7 default this will %e off5 S7nta/0 Set ti$ing on X off '/0 SQL- set ti$ing on SQL- sele!t E fo$ dept. D'ATNO DN(M' LOC """""""""" """""""""""""" """"""""""""" 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON 'lapsed0 3303303353D SQLAROMAT This will %e used to !hange the SQL po$pt5 S7nta/0 Copy rights are reserved. 140 Set sUlpo$pt ,prompt- '/0 SQL- set sUlpo$pt =OR(CL'-= OR(CL'- SQLC(S' This will %e used to !hange the !ase of the SQL state$ents5 )7 default the !ase is $i/ed5 S7nta/0 Set sUl!ase uppe X $i/ed X lowe '/0 SQL- set sUl!ase uppe SQLT'RMIN(TOR This will %e used to !hange the te$inato of the SQL state$ents5 )7 default the te$inato is .5 S7nta/0 Set sUlte$inato ,termination_c)aracter- '/0 SQL- set sUlte$inato 0 SQL- sele!t E fo$ dept0 D'BIN' )7 default if the < !haa!te finds then it will teat as %ind vaia%le and as& fo the input5 Suppose 7ou want to teat it as a no$al !haa!te while inseting data# then 7ou !an pevent this %7 using the define option5 )7 default this will %e on S7nta/0 Set define on X off '/0 SQL-inset into dept values(C3#=R<D=#=:*D=). Copy rights are reserved. 141 'nte value fo d0 old 20 inset into dept values(C3#=R<D=#=:*D=) new 20 INS'RT INTO D'AT 9(LU'S(C3#=R=#=:*D=) SQL- set define off SQL-inset into dept values(C3#=R<D=#=:*D=). "" hee it won;t as& fo value N'6A(8' This will shows how $an7 %lan& lines will %e left %efoe the epot5 )7 default it will leave one %lan& line5 S7nta/0 Set newpage ,value- '/0 SQL- set newpage 23 The Teo value fo newpage does not podu!e Teo %lan& lines instead it swit!hes to a spe!ial popet7 whi!h podu!es a top"of"fo$ !haa!te (he/ 24) Just %efoe the date on ea!h page5 Most $oden pintes espond to this %7 $oving i$$ediatel7 to the top of the ne/t page# whee the piting of the epot will %egin5 :'(DS'A This allow 7ou to indi!ate whee 7ou want to %ea& a page title o a !olu$n heading that uns longe than one line5 The default heading sepaato is veti!al %a (X)5 S7nta/0 Set headsep ,!eparation_c)ar- '/0 SQL- sele!t E fo$ dept. D'ATNO DN(M' LOC """""""""" """""""""""""" """"""""""""" 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON Copy rights are reserved. 142 SQL- set headsetp I SQL- !ol dna$e heading =D'A(RTM'NT I N(M'= SQL- ? D'A(RTM'NT D'ATNO N(M' LOC """""""""" """"""""""""""""" """""""""" 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON 'C:O 6hen using a %ind vaia%le# the SQL state$ent is $aintained %7 e!ho5 )7 default this is off5 S7nta/0 Set e!ho on X off 9'RIB* 6hen using a %ind vaia%le# the old and new state$ents will %e $aintained %7 veif75 )7 default this is on5 S7nta/0 Set veif7 on X off '/0 SQL- sele!t E fo$ dept whee deptno H <dno. 'nte value fo dno0 23 old 20 sele!t E fo$ dept whee deptno H <dno new 20 sele!t E fo$ dept whee deptno H 23 D'ATNO DN(M' LOC """""""""" """""""""""""""" """"""""""" 23 (CCOUNTIN8 N'6 *ORF SQL- set veif7 off Copy rights are reserved. 143 SQL- sele!t E fo$ dept whee deptno H <dno. 'nte value fo dno0 13 D'ATNO DN(M' LOC """""""""" """"""""""""" """"""""""" 13 R'S'(RC: D(LL(S ANO This will give displa7s the page nu$%es5 )7 default the value would %e Teo5 '/0 SQL- !ol hiedate newMvalue /toda7 nopint fo$at a2 tun! SQL- ttitle left /toda7 ight =page= sUl5pno SQL- sele!t E fo$ e$p whee deptno H 23. 3S">UN"W2 page 2 'MANO 'N(M' >O) M8R S(L COMM D'ATNO """""""""" """""""""" """"""""""""""" """"""""" """"" """""""""" """""""""" VVW1 CL(RF M(N(8'R VW4S 1@C3 23 VW4S FIN8 AR'SID'NT C333 23 VS4@ MILL'R CL'RF VVW1 2433 23 In the a%ove nopint tells SQLALUS not to displa7 this !olu$n when it pints the esults of the SQL state$ent5 Dates that have %een efo$atted %7 TOMC:(R get a default width of a%out 233 !haa!tes5 )7 !hanging the fo$at to a2 tun!# 7ou $ini$iTe this effe!t5 N'6M9(LU' insets !ontents of the !olu$n etieved %7 the SQL state$ent into a vaia%le !alled /toda75 Copy rights are reserved. 144 SA'CI(L BIL'S LO8IN5sUl If 7ou would li&e SQLALUS to define 7ou own envion$ental settings# put all the eUuied !o$$ands in a file na$ed login5sUl5 This is a spe!ial filena$e that SQLALUS alwa7s loo&s fo wheneve it stats up5 If it finds login5sUl# it e/e!utes an7 !o$$ands in it as if 7ou had enteed then %7 hand5 *ou !an put an7 !o$$and in login5sUl that 7ou !an use in SQLALUS# in!luding SQLALUS !o$$ands and SQL state$ents5 (ll ot the$ e/e!uted %efoe SQLALUS gives 7ou the SQL- po$pt5 8LO8IN5sUl This is used in the sa$e wa7s as LO8IN5sUl %ut to esta%lish default SQLALUS settings fo all uses of a data%ase5 Copy rights are reserved. 145 IMAORT(NT QU'RI'S 2) To find the nth ow of a ta%le SQL- Sele!t Efo$ e$p whee owid H (sele!t $a/(owid) fo$ e$p whee ownu$ ,H @). O SQL- Sele!t Efo$ e$p whee ownu$ ,H @ $inus sele!t Efo$ e$p whee ownu$ ,H 4. 1) To find dupli!ate ows SQL- Sele!t Efo$ e$p whee owid in (sele!t $a/(owid) fo$ e$p goup %7 e$pno# ena$e# $g# Jo%# hiedate# !o$$# deptno# sal). O SQL- Sele!t e$pno#ena$e#sal#Jo%#hiedate#!o$$ # !ount(E) fo$ e$p goup %7 e$pno#ena$e#sal#Jo%#hiedate#!o$$ having !ount(E) -H2.
4) To delete dupli!ate ows SQL- Delete e$p whee owid in (sele!t $a/(owid) fo$ e$p goup %7 e$pno#ena$e#$g#Jo%#hiedate#sal#!o$$#deptno).
@) To find the !ount of dupli!ate ows SQL- Sele!t ena$e# !ount(E) fo$ e$p goup %7 ena$e having !ount(E) -H 2. Copy rights are reserved. 146 C) :ow to displa7 altenative ows in a ta%le[ SQL- sele!t Efo$ e$p whee (owid#3) in (sele!t owid#$od(ownu$#1) fo$ e$p). D) 8etting e$plo7ee details of ea!h depat$ent who is dawing $a/i$u$ sal[ SQL- sele!t Efo$ e$p whee (deptno#sal) in ( sele!t deptno#$a/(sal) fo$ e$p goup %7 deptno). V) :ow to get nu$%e of e$plo7ees in ea!h depat$ent # in whi!h depat$ent is having $oe than 1C33 e$plo7ees[ SQL- Sele!t deptno#!ount(E) fo$ e$p goup %7 deptno having !ount(E) -1C33. W) To eset the ti$e to the %eginning of the da7 SQL- Sele!t toM!ha(tun!(s7sdate)#;dd"$on"7777 hh0$i0ss a$;) fo$ dual. S) To find nth $a/i$u$ sal SQL- Sele!t Efo$ e$p whee sal in (sele!t $a/(sal) fo$ (sele!t Efo$ e$p ode %7 sal) whee ownu$ ,H C).
Copy rights are reserved. 147 INTRODUCTION C:(R(CT'RSTICS :ighl7 stu!tued# eada%le and a!!essi%le language5 Standad and Aota%le language5 '$%edded language5 I$poved e/e!ution authoit75 23g B'(TUR'S /ptimi,ed compiler . To !hange the opti$iTe settings fo the entie data%ase# set the data%ase paa$ete ALSQLMOATIMIZ'ML'9'L5 9alid settings ae as follows 3 " No opti$iTation 2 " Modeate opti$iTation 1 " (ggessive opti$iTation These settings ae also $odifia%le fo the !uent session5 SQL- alte session set plsUlMopti$TeMlevelH1. Oa!le etains opti$iTe settings on a $odule"%7"$odule %asis5 6hen 7ou e!o$pile a pati!ula $odule with nondefault settings# the settings will sti!& allowing 7ou to e!o$pile late on using R'US' S'TTIN8S5 SQL- (lte po!edue po! !o$pile plsUlMopti$iTeMlevelH2. SQL- (lte po!edue po! !o$pile euse settings. Compile0time warnin"!. Stating with oa!le data%ase 23g elease 2 7ou !an ena%le additional !o$pile"ti$e wanings to help $a&e 7ou poga$s $oe o%ust5 The !o$pile !an dete!t potential unti$e po%le$s with 7ou !ode# su!h as identif7ing lines of !ode that will neve %e un5 This po!ess# also &nown as lint c)ecin"5 Copy rights are reserved. 148 To ena%le these wanings fo the entie data%ase# set the data%ase paa$ete ALSQLM6(RNIN8S5 These settings ae also $odifia%le fo the !uent session5 SQL- alte session set plsUlMwanings H Kena%le0all;. The a%ove !an %e a!hieved using the %uilt"in pa!&age D)MSM6(RNIN85 Conditional compilation. Conditional !o$pilation allows the !o$pile to allow to !o$pile sele!ted pats of a poga$ %ased on !onditions 7ou povide with the `IB die!tive5 $upport 'or non0!e.uential collection! in 1/2344. 5mproved datatype !upport. 6actrace an e(ception to it! line number. 6hen handling an eo# how !an 7ou find the line nu$%e on whi!h the eo was oiginall7 aised[ In ealie elease# the onl7 wa7 to do this was allow 7ou e/!eption to go unhandled and then view the full eo ta!e sta!&5 Now 7ou !an !all D)MSMUTILIT*5BORM(TM'RRORM)(CFTR(C' fun!tion to o%tain that sta!& and $anipulate it poga$$ati!all7 within 7ou poga$5 $et operator! 'or ne!ted table!. $upport 'or re"ular e(pre!!ion!. Oa!le data%ase 23g suppots the use of egula e/pessions inside AL?SQL !ode via fou new %uilt"in fun!tions5 R'8'+AMLIF' R'8'+AMINSTR R'8'+AMSU)STR R'8'+AMR'AL(C' 7ro"rammer0de'ined .uotin" mec)ani!m. Stating with oa!le data%ase 23g elease 2# 7ou !an define 7ou own Uuoting $e!hanis$ fo sting liteals in %oth SQL and AL?SQL5 Copy rights are reserved. 149 Use the !haa!tes U;(U followed %7 a single Uuote) to note the poga$$e"defined delie$ete fo 7ou sting liteal5 '/0 D'CL(R' v va!ha(23) 0H =!o$pute=. )'8IN d%$sMoutput5putMline(U=Ev H E= XX v). d%$sMoutput5putMline(U=`v H `= XX v). 'ND. Output0 v H !o$pute v H !o$pute 8any new built0in paca"e!. D)MSMSC:'DUL'R Repesents a $aJo update to D)MSM>O)5 D)MSMSC:'DUL'R povides $u!h i$poved fun!tionalit7 fo s!heduling and e/e!uting Jo%s defined via stoed po!edues5 D)MSMCR*ATO Offes the a%ilit7 to en!7pt and de!7pt !o$$on oa!le datat7pe# in!luding R(6s# )LO)s# and CLO)s5 It also povides glo%aliTation suppot fo en!7pting data a!oss diffeent !haa!tesets5 D)MSMMONITOR Aovides an (AI to !ontol additional ta!ing and statisti!s gatheing of sessions5 D)MSM6(RNIN8 Aovides an (AI into the AL?SQL !o$pile wanings $odule# allowing 7ou to ead and !hange settings that !ontol whi!h wanings ae suppessed# displa7ed# o teated as eos5 ST(ND(RD A(CF(8' Copy rights are reserved. 150 Oa!le has defined in this spe!ial pa!&age5 Oa!le defines Uuite a few identifies in this pa!&age# in!luding %uilt"in e/!eptions# fun!tions and su%t7pes5 *ou !an efeen!e the %uilt"in fo$ %7 pefi/ing it with ST(ND(RD5 The %asi! unit in an7 AL?SQL poga$ is %lo!&5 (ll AL?SQL poga$s ae !o$posed of %lo!&s whi!h !an o!!u seUuentiall7 o nested5 )LOCF STRUCTUR' De!lae "" de!laative se!tion )egin "" e/e!uta%le se!tion '/!eption "" e/!eption se!tion 'nd. In the a%ove de!laative and e/!eptiona se!tions ae optional5 )LOCF T*A'S (non7$ous %lo!&s Na$ed %lo!&s La%eled %lo!&s Su%poga$s Tigges (NON*MOUS )LOCFS (non7$ous %lo!&s i$plies %asi! %lo!& stu!tue5 '/0 )'8IN D%$sMoutput5putMline(KM7 fist poga$;)0 'ND. L()'L'D )LOCFS La%eled %lo!&s ae anon7$ous %lo!&s with a la%el whi!h gives a na$e to the %lo!&5 Copy rights are reserved. 151 '/0 ,,$7M%loo!&-- )'8IN D%$sMoutput5putMline(KM7 fist poga$;)0 'ND. SU)ARO8R(MS Su%poga$s ae po!edues and fun!tions5 The7 !an %e stoed in the data%ase as stand" alone o%Je!ts# as pat of pa!&age o as $ethods of an o%Je!t t7pe5 TRI88'RS Tigges !onsists of a AL?SQL %lo!& that is asso!iated with an event that o!!u in the data%ase5 N'ST'D )LOCFS ( %lo!& !an %e nested within the e/e!uta%le o e/!eption se!tion of an oute %lo!&5 ID'NTIBI'RS Identifies ae used to na$e AL?SQL o%Je!ts# su!h as vaia%les# !usos# t7pes and su%poga$s5 Identifies !onsists of a lette# optionall7 followed %7 an7 seUuen!e of !haa!tes# in!luding lettes# nu$%es# dolla signs# undes!oes# and pound signs onl75 The $a/i$u$ length fo an identifie is 43 !haa!tes5 QUOT'D ID'NTIBI'RS If 7ou want to $a&e an identifie !ase sensitive# in!lude !haa!tes su!h as spa!es o use a eseved wod# 7ou !an en!lose the identifie in dou%le Uuotation $a&s5 '/0 D'CL(R' bab nu$%e 0H C. b(b nu$%e 0H D. )'8IN d%$sMoutput5putMline(=a H = XX a). d%$sMoutput5putMline(=( H = XX (). 'ND. Copy rights are reserved. 152 Output0 a H D ( H D COMM'NTS Co$$ents i$pove eada%ilit7 and $a&e 7ou poga$ $oe undestanda%le5 The7 ae ignoed %7 the AL?SQL !o$pile5 Thee ae two t7pes of !o$$ents availa%le5 Single line !o$$ents Multiline !o$$ents SIN8L' LIN' COMM'NTS ( single"line !o$$ent !an stat an7 point on a line with two dashes and !ontinues until the end of the line5 '/0 )'8IN D%$sMoutput5putMline(Khello;). "" sa$ple poga$ 'ND. MULTILIN' COMM'NTS Multiline !o$$ents stat with the ?E deli$ite and ends with E? deli$ite5 '/0 )'8IN D%$sMoutput5putMline(Khello;). ?E sa$ple poga$ E? 'ND. 9(RI()L' D'CL'R(TIONS 9aia%les !an %e de!laed in de!laative se!tion of the %lo!&. '/0 D'CL(R' a nu$%e. % nu$%e 0H C. ! nu$%e default D. CONST(NT D'CL'R(TIONS Copy rights are reserved. 153 To de!lae a !onstant# 7ou in!lude the CONST(NT &e7wod# and 7ou $ust suppl7 a default value5 '/0 D'CL(R' % !onstant nu$%e 0H C. ! !onstant nu$%e default D. NOT NULL CL(US' *ou !an also spe!if7 that the vaia%le $ust %e not null5 '/0 D'CL(R' % !onstant nu$%e not null0H C. ! nu$%e not null default D. (NC:OR'D D'CL'R(TIONS AL?SQL offes two &inds of a!hoing5 S!ala an!hoing Re!od an!hoing SC(L(R (NC:ORIN8 Use the LT*A' atti%ute to define 7ou vaia%le %ased on ta%le;s !olu$n of so$e othe AL?SQL s!ala vaia%le5 '/0 D'CL(R' dno dept5deptnoLt7pe. Su%t7pe tMnu$%e is nu$%e. a tMnu$%e. Su%t7pe tMsno is student5snoLt7pe. 9Msno tMsno. R'CORD (NC:ORIN8 Use the LRO6T*A' atti%ute to define 7ou e!od stu!tue %ased on a ta%le5 '/0 Copy rights are reserved. 154 cD'CL(R' 9Mdept deptLowt7pe. )'N'BITS OB (NC:OR'D D'CL(R(TIONS S7n!honiTation with data%ase !olu$ns5 No$aliTation of lo!al vaia%les5 ARO8R(MM'R"D'BIN'D T*A'S 6ith the SU)T*A' state$ent# AL?SQL allows 7ou to define 7ou own su%t7pes o aliases of pedefined datat7pes# so$eti$es efeed to as a%sta!t datat7pes5 Thee ae two &inds of su%t7pes5 Constained Un!onstained CONSTR(IN'D SU)T*A' ( su%t7pe that esti!ts o !onstains the values no$all7 allowd %7 the datat7pe itself5 '/0 Su%t7pe positive is %ina7Mintege ange 25512@V@W4D@V. In the a%ove de!laation a vaia%le that is de!laed as positive !an stoe onl7 ingege geate than Teo even though %ina7Mintege anges fo$ "12@V@W4D@V55G12@V@W4D@V5 UNCONSTR(IN'D SU)T*A' ( su%t7pe that does not esti!t the values of the oiginal datat7pe in vaia%les de!laed with the su%t7pe5 '/0 Su%t7pe float is nu$%e. D(T(T*A' CON9'RSIONS AL?SQL !an handle !onvesions %etween diffeent fa$ilies a$ong the datat7pes5 Convesion !an %e done in two wa7s5 '/pli!it !onvesion Copy rights are reserved. 155 I$pli!it !onvesion '+ALICIT CON9'RSION This !an %e done using the %uilt"in fun!tions availa%le5 IMALICIT CON9'RSION AL?SQL will auto$ati!all7 !onvet %etween datat7pe fa$ilies when possi%le5 '/0 D'CL(R' a va!ha(23). )'8IN sele!t deptno into a fo$ dept whee dna$eH=(CCOUNTIN8=. 'ND. In the a%ove vaia%le a is !ha t7pe and deptno is nu$%e t7pe even though# oa!le will auto$ati!all7 !onvets the nu$ei! data into !ha t7pe assigns to the vaia%le5 AL?SQL !an auto$ati!all7 !onvet %etween Chaa!tes and nu$%es Chaa!tes and dates 9(RI()L' SCOA' (ND 9ISI)ILIT* The s!ope of a vaia%le is the potion of the poga$ in whi!h the vaia%le !an %e a!!essed5 Bo AL?SQL vaia%les# this is fo$ the vaia%le de!laation until the end of the %lo!&5 6hen a vaia%le goes out of s!ope# the AL?SQL engine will fee the $e$o7 used to stoe the vaia%le5 The visi%ilit7 of a vaia%le is the potion of the poga$ whee the vaia%le !an %e a!!essed without having to Uualif7 the efeen!e5 The visi%ilit7 is alwa7s within the s!ope5 If it is out of s!ope# it is not visi%le5 '/20 D'CL(R' a nu$%e. "" s!ope of a )'8IN """""""" D'CL(R' % nu$%e. "" s!ope of % Copy rights are reserved. 156 )'8IN """"" 'ND. """""" 'ND. '/10 D'CL(R' a nu$%e. % nu$%e. )'8IN "" a # % availa%le hee D'CL(R' % !ha(23). )'8IN "" a and !ha t7pe % is availa%le hee 'ND. """"" 'ND. '/40 ,,$7M%lo!&-- D'CL(R' a nu$%e. % nu$%e. )'8IN "" a # % availa%le hee D'CL(R' % !ha(23). )'8IN "" a and !ha t7pe % is availa%le hee "" nu$%e t7pe % is availa%le using ,,$7M%lo!&--5% 'ND. """""" 'ND. AL?SQL CONTROL STRUCTUR'S AL?SQL has a vaiet7 of !ontol stu!tues that allow 7ou to !ontol the %ehaviou of the %lo!& as it uns5 These stu!tues in!lude !onditional state$ents and loops5 If"then"else Case Copy rights are reserved. 157 Case with no else La%eled !ase Sea!hed !ase Si$ple loop 6hile loop Bo loop 8oto and La%els IB"T:'N"'LS' S7nta/0 If ,condition1- then $e.uence o' !tatement!; 'lsif ,condition1- then $e.uence o' !tatement!; RR 'lse $e.uence o' !tatement!; 'nd if. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e H =(CCOUNTIN8=. if dno H 23 then d%$sMoutput5putMline(=Lo!ation is N'6 *ORF=). elsif dno H 13 then d%$sMoutput5putMline(=Lo!ation is D(LL(S=). elsif dno H 43 then d%$sMoutput5putMline(=Lo!ation is C:IC(8O=). else d%$sMoutput5putMline(=Lo!ation is )OSTON=). end if. 'ND. Output0 Lo!ation is N'6 *ORF Copy rights are reserved. 158 C(S' S7nta/0 Case te!t0variable 6hen value1 then !e.uence o' !tatement!; 6hen value2 then !e.uence o' !tatement!; RR 6hen valuen then !e.uence o' !tatement!; 'lse !e.uence o' !tatement!; 'nd !ase. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e H =(CCOUNTIN8=. !ase dno when 23 then d%$sMoutput5putMline(=Lo!ation is N'6 *ORF=). when 13 then d%$sMoutput5putMline(=Lo!ation is D(LL(S=). when 43 then d%$sMoutput5putMline(=Lo!ation is C:IC(8O=). else d%$sMoutput5putMline(=Lo!ation is )OSTON=). end !ase. 'ND. Output0 Lo!ation is N'6 *ORF C(S' 6IT:OUT 'LS' S7nta/0 Case te!t0variable 6hen value1 then !e.uence o' !tatement!; 6hen value2 then !e.uence o' !tatement!; RR Copy rights are reserved. 159 6hen valuen then !e.uence o' !tatement!; 'nd !ase. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e H =(CCOUNTIN8=. !ase dno when 23 then d%$sMoutput5putMline(=Lo!ation is N'6 *ORF=). when 13 then d%$sMoutput5putMline(=Lo!ation is D(LL(S=). when 43 then d%$sMoutput5putMline(=Lo!ation is C:IC(8O=). when @3 then d%$sMoutput5putMline(=Lo!ation is )OSTON=). end !ase. 'ND. Output0 Lo!ation is N'6 *ORF L()'L'D C(S' S7nta/0 ,,label-- Case te!t0variable 6hen value1 then !e.uence o' !tatement!; 6hen value2 then !e.uence o' !tatement!; RR 6hen valuen then !e.uence o' !tatement!; 'nd !ase. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e H =(CCOUNTIN8=. ,,$7M!ase-- Copy rights are reserved. 160 !ase dno when 23 then d%$sMoutput5putMline(=Lo!ation is N'6 *ORF=). when 13 then d%$sMoutput5putMline(=Lo!ation is D(LL(S=). when 43 then d%$sMoutput5putMline(=Lo!ation is C:IC(8O=). when @3 then d%$sMoutput5putMline(=Lo!ation is )OSTON=). end !ase $7M!ase. 'ND. Output0 Lo!ation is N'6 *ORF S'(RC:'D C(S' S7nta/0 Case 6hen ,condition1- then !e.uence o' !tatement!; 6hen ,condition2- then !e.uence o' !tatement!; RR 6hen ,conditionn- then !e.uence o' !tatement!; 'nd !ase. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e H =(CCOUNTIN8=. !ase dno when dno H 23 then d%$sMoutput5putMline(=Lo!ation is N'6 *ORF=). when dno H 13 then d%$sMoutput5putMline(=Lo!ation is D(LL(S=). when dno H 43 then d%$sMoutput5putMline(=Lo!ation is C:IC(8O=). when dno H @3 then d%$sMoutput5putMline(=Lo!ation is )OSTON=). end !ase. Copy rights are reserved. 161 'ND. Output0 Lo!ation is N'6 *ORF SIMAL' LOOA S7nta/0 Loop $e.uence o' !tatement!; '/it when ,condition-. 'nd loop. In the s7nta/ e/it when ,condition- is eUuivalent to If ,condition- then '/it. 'nd if. '/0 D'CL(R' i nu$%e 0H 2. )'8IN loop d%$sMoutput5putMline(=i H = XX i). i 0H i G 2. e/it when i - C. end loop. 'ND. Output0 i H 2 i H 1 i H 4 i H @ i H C 6:IL' LOOA S7nta/0 6hile ,!ondition- loop Copy rights are reserved. 162 $e.uence o' !tatement!; 'nd loop. '/0 D'CL(R' i nu$%e 0H 2. )'8IN 6hile i ,H C loop d%$sMoutput5putMline(=i H = XX i). i 0H i G 2. end loop. 'ND. Output0 i H 2 i H 1 i H 4 i H @ i H C BOR LOOA S7nta/0 Bo ,loop_counter_variable- in low_bound55)i")_bound loop $e.uence o' !tatement!; 'nd loop. '/20 )'8IN Bo i in 255C loop d%$sMoutput5putMline(=i H = XX i). end loop. 'ND. Output0 i H 2 i H 1 i H 4 i H @ i H C Copy rights are reserved. 163 '/10 )'8IN Bo i in evese 255C loop d%$sMoutput5putMline(=i H = XX i). end loop. 'ND. Output0 i H C i H @ i H 4 i H 1 i H 2 NULL ST(T'M'NT Usuall7 when 7ou wite a state$ent in a poga$# 7ou want it to do so$ething5 Thee ae !ases# howeve# when 7ou want to tell AL?SQL to do a%solutel7 nothing# and that is whee the NULL !o$es5 The NULL state$ent deos nothing e/!ept pass !ontol to the ne/t e/e!uta%le state$ent5 *ou !an use NULL state$ent in the following situations5 I$poving poga$ eada%ilit75 So$eti$es# it is helpful to avoid an7 a$%iguit7 inheent in an IB state$ent that doesn;t !ove all possi%le !ases5 Bo e/a$ple# when 7ou wite an IB state$ent# 7ou do not have to in!lude an 'LS' !lause5 Nullif7ing a aised e/!eption5 6hen 7ou don;t want to wite an7 spe!ial !ode to handle an e/!eption# 7ou !an use the NULL state$ent to $a&e sue that a aised e/!eption halts e/e!ution of the !uent AL?SQL %lo!& %ut does not popagate an7 e/!eptions to en!losing %lo!&s5 Using null afte a la%el5 In so$e !ases# 7ou !an pai NULL with 8OTO to avoid having to e/e!ute additional state$ents5 Bo e/a$ple# I use a 8OTO state$ent to Uui!&l7 $ove to the end of $7 poga$ if the state of $7 data indi!ates that no futhe po!essing is eUuied5 )e!ause I do not have to do an7thing at the te$ination of the poga$# I pla!e a NULL state$ent afte the la%el %e!ause at least one e/e!uta%le state$ent is eUuied thee5 'ven though NULL deos nothing# it is still an e/e!uta%le state$ent5 Copy rights are reserved. 164 8OTO (ND L()'LS S7nta/0 8oto label. 6hee label is a la%el defined in the AL?SQL %lo!&5 La%els ae en!losed in dou%le angle %a!&ets5 6hen a goto state$ent is evaluated# !ontol i$$ediatel7 passes to the state$ent identified %7 the la%el5 '/0 )'8IN Bo i in 255C loop d%$sMoutput5putMline(=i H = XX i). if i H @ then goto e/itMloop. end if. end loop. ,,e/itMloop-- Null. 'ND. Output0 i H 2 i H 1 i H 4 i H @ R'STRICTIONS ON 8OTO It is illegal to %an!h into an inne %lo!&# loop5 (t least one e/e!uta%le state$ent $ust follow5 It is illegal to %an!h into an if state$ent5 It is illegal to %an!h fo$ one if state$ent to anothe if state$ent5 It is illegal to %an!h fo$ e/!eption %lo!& to the !uent %lo!&5 AR(8M(S Aag$as ae !o$pile die!tives5 The7 seve as instu!tions to the AL?SQL !o$pile5 The !o$pile will a!t on the pag$a duing the !o$pilation of the %lo!&5 S7nta/0 Copy rights are reserved. 165 AR8(M( in!truction_to_compiler5 AL?SQL offes seveal pag$as0 (UTONOMOUSMTR(NS(CTION '+C'ATIONMINIT R'STRICTMR'B'R'NC'S S'RI(LL*MR'US()L' Copy rights are reserved. 166 SU)ARO8R(MS AROC'DUR'S ( po!edue is a $odule that pefo$s one o $oe a!tions5 S7nta/0 Ao!edue Ns!he$a5Oname N(parameter1 N#parameter2 RO)O Nauthid define X !uentMuseO is "" Nde!laationsO )egin "" e/e!uta%le state$ents N'/!eption "" e/!eption handlesO 'nd Nna$eO. In the a%ove aut)id !lause defines whethe the po!edue will e/e!ute unde the authoit7 of the define of the po!edue o unde the authoit7 of the !uent use5 BUNCTIONS ( fun!tion is a $odule that etuns a value5 S7nta/0 Bun!tion Ns!he$a5Oname N(parameter1 N#parameter2 RO)O Retun etunMdatat7pe Nauthid define X !uentMuseO Ndete$inisti!O NpaallelMena%leO is "" Nde!laationsO )egin "" e/e!uta%le state$ents N'/!eption "" e/!eption handlesO 'nd Nna$eO. In the a%ove aut)id !lause defines whethe the po!edue will e/e!ute unde the authoit7 of the define of the po!edue o unde the authoit7 of the !uent use5 Copy rights are reserved. 167 -etermini!tic !lause defines# an opti$iTation hint that lets the s7ste$ use a saved !op7 of the fun!tion;s etun esult# if availa%le5 The Uuet7 opti$iTe !an !hoose whethe to use the saved !op7 o e"!all the fun!tion5 7arallel_enable !lause defines# an opti$iTation hint that ena%les the fun!tion to %e e/e!uted in paallel when !alled fo$ within S'L'CT state$ent5 A(R(M'T'R MOD'S In (Default) Out In out IN In paa$ete will a!t as pl9!.l con!tant5 OUT Out paa$ete will a!t as unintiali,ed variable5 *ou !annot povide a default value to an out paa$ete5 (n7 assign$ents $ade to out paa$ete ae olled %a!& when an e/!eption is aised in the poga$5 (n a!tual paa$ete !oesponding to an out fo$al paa$ete $ust %e a vaia%le5 IN OUT In out paa$ete will a!t as initiali,ed variable5 (n a!tual paa$ete !oesponding to an in out fo$al paa$ete $ust %e a vaia%le5 D'B(ULT A(R(M'T'RS Default Aaa$etes will not allow in the be"innin" and middle5 /ut and 5n /ut paa$etes !an not have default values5 '/0 po!edue p(a in nu$%e default C# % in nu$%e default D# ! in nu$%e default V) \ valid po!edue p(a in nu$%e# % in nu$%e default D# ! in nu$%e default V) \ valild Copy rights are reserved. 168 po!edue p(a in nu$%e# % in nu$%e# ! in nu$%e default V) \ valild po!edue p(a in nu$%e# % in nu$%e default D# ! in nu$%e) \ invalild po!edue p(a in nu$%e default C# % in nu$%e default D# ! in nu$%e) \ invalild po!edue p(a in nu$%e default C# % in nu$%e# ! in nu$%e) \ invalild NOT(TIONS Notations ae of two t7pes5 Aositional notation Na$e notation 6e !an !o$%ine positional and na$e notation %ut positional notation !an not %e followed %7 the na$e notation5 '/0 Suppose we have a po!edue po!(a nu$%e#% nu$%e#! nu$%e) and we have one anon7$ous %lo!& whi!h !ontains v2#v1# and v4. SQL- e/e! po! (v2#v1#v4) "" Aositional notation SQL- e/e! po! (aH-v2#%H-v1#!H-v4) "" Na$ed notation BORM(L (ND (CTU(L A(R(M'T'RS Aaa$etes whi!h ae in !alling su%poga$ ae actual parameter!5 Aaa$etes whi!h ae in !alled su%poga$ ae 'ormal parameter!5 If an7 su%poga$ was !alled# on!e the !all was !o$pleted then the values of fo$al paa$etes ae !opied to the a!tual paa$etes5 '/20 CR'(T' OR R'AL(C' AROC'DUR' S(MAL'(a in nu$%e#% out nu$%e#! in out nu$%e) is )'8IN d%$sMoutput5putMline(=(fte !all=). d%$sMoutput5putMline(=a H = XX a XX= % H = XX % XX = ! H = XX !). % 0H 23. ! 0H 13. d%$sMoutput5putMline(=(fte assign$ent=). d%$sMoutput5putMline(=a H = XX a XX= % H = XX % XX = ! H = XX !). 'ND S(MAL'. Copy rights are reserved. 169 D'CL(R' v2 nu$%e 0H @. v1 nu$%e 0H C. v4 nu$%e 0H D. )'8IN d%$sMoutput5putMline(=)efoe !all=). d%$sMoutput5putMline(=v2 H = XX v2 XX = v1 H = XX v1 XX = v4 H = XX v4). sa$ple(v2#v1#v4). d%$sMoutput5putMline(=(fte !o$pletion of !all=). d%$sMoutput5putMline(=v2 H = XX v2 XX = v1 H = XX v1 XX = v4 H = XX v4). 'ND. Output0 )efoe !all v2 H @ v1 H C v4 H D (fte !all a H @ % H ! H D (fte assign$ent a H @ % H 23 ! H 13 (fte !o$pletion of !all v2 H @ v1 H 23 v4 H 13 '/10 CR'(T' OR R'AL(C' BUN(a in nu$%e#% out nu$%e#! in out nu$%e) etun nu$%e IS )'8IN d%$sMoutput5putMline(=(fte !all=). d%$sMoutput5putMline(=a H = XX a XX = % H = XX % XX = ! H = XX !). d%$sMoutput5putMline(=)efoe assigne$ent Result H = XX (aEnvl(%#2)E!)). % 0H C. ! 0H V. d%$sMoutput5putMline(=(fte assign$ent=). d%$sMoutput5putMline(=a H = XX a XX = % H = XX % XX = ! H = XX !). etun (aE%E!). 'ND BUN. D'CL(R' v2 nu$%e 0H 2. v1 nu$%e 0H 1. v4 nu$%e 0H 4. v nu$%e. Copy rights are reserved. 170 )'8IN d%$sMoutput5putMline(=)efoe !all=). d%$sMoutput5putMline(=v2 H = XX v2 XX = v1 H = XX v1 XX = v4 H = XX v4). v 0H fun(v2#v1#v4). d%$sMoutput5putMline(=(fte !all !o$pleted=). d%$sMoutput5putMline(=v2 H = XX v2 XX = v1 H = XX v1 XX = v4 H = XX v4). d%$sMoutput5putMline(=Result H = XX v). 'ND. Output0 )efoe !all v2 H 2 v1 H 1 v4 H 4 (fte !all a H 2 % H ! H 4 )efoe assigne$ent Result H 4 (fte assign$ent a H 2 % H C ! H V (fte !all !o$pleted v2 H 2 v1 H C v4 H V Result H 4C R'STRICTIONS ON BORM(L A(R(M'T'RS )7 de!laing with spe!ified siTe in a!tual paa$etes5 )7 de!laing fo$al paa$etes with Lt7pe spe!ifie5 USIN8 NOCOA* :ocopy is a hint# not a !o$$and5 This $eans that the !o$pile $ight silentl7 de!ide that it !an;t fulfill 7ou eUuest fo a nocopy paa$ete5 The !op7ing fo$ fo$al to a!tual !an %e esti!ted %7 issuing nocopy Uualifie5 To pass the out and in out paa$etes %7 efeen!e use no!op7 Uualifie5 '/0 CR'(T' OR R'AL(C' AROC'DUR' AROC(a in out no!op7 nu$%e) IS )'8IN """" 'ND AROC. C(LL (ND '+'C Copy rights are reserved. 171 Call is a SQL state$ent# whi!h !an %e used to e/e!ute su%poga$s li&e e/e!5 S7nta/0 Call !ubpro"ram_name(Nar"ument_li!tO) Ninto )o!t_variableO. The paantheses ae alwa7s eUuied# even if the su%poga$ ta&es no agu$ents5 6e !an not use !all with out and in out paa$etes5 Call is a SQL state$ent# it is not valid inside a AL?SQL %lo!&. The INTO !lause is used fo the output vaia%les of fun!tions onl75 6e !an not use Ke/e!; with out o in out paa$etes5 '/e! is not valid inside a AL?SQL %lo!&. '/20 CR'(T' OR R'AL(C' AROC IS )'8IN d%$sMoutput5putMline(=hello wold=). 'ND AROC. Output0 SQL- !all po!(). hello wold '/10 CR'(T' OR R'AL(C' AROC(a in nu$%e#% in nu$%e) IS )'8IN d%$sMoutput5putMline(=a H = XX a XX = % H = XX %). 'ND AROC. Output0 SQL- !all po!(C#D). a H C % H D '/40 CR'(T' OR R'AL(C' BUNCTION BUN R'TURN 9(RC:(R IS )'8IN etun =hello wold=. 'ND BUN. Output0 Copy rights are reserved. 172 SQL- vaia%le v va!ha(13) SQL- !all fun() into 0v. SQL- pint v hello wold C(LL )* R'B'R'NC' (ND C(LL )* 9(LU' In paa$etes %7 default call by re'erence whee as out and in out call by value5 6hen paa$ete passed %7 efeen!e# a pointe to the a!tual paa$ete is passed to the !oesponding fo$al paa$ete5 6hen paa$ete passed %7 value it !opies the value of the a!tual paa$ete to the fo$al paa$ete5 Call %7 efeen!e is faste than the !all %7 value %e!ause it avoids the !op7ing5 SU)ARO8R(MS O9'RLO(DIN8 Aossi%le with diffeent nu$%e of paa$etes5 Aossi%le with diffeent t7pes of data5 Aossi%le with sa$e t7pe with o%Je!ts5 Can not %e possi%le with diffeent t7pes of $odes5 6e !an oveload lo!al su%poga$s also5 '/0 SQL- !eate o epla!e t7pe t2 as o%Je!t(a nu$%e).? SQL- !eate o epla!e t7pe t2 as o%Je!t(a nu$%e).? D'CL(R' i t2 0H t2(C). J t1 0H t1(C). AROC'DUR' A($ t2) IS )'8IN d%$sMoutput5putMline(=a H = XX $5a). 'ND A. AROC'DUR' A(n t1) IS )'8IN d%$sMoutput5putMline(=% H = XX n5%). 'ND A. AROC'DUR' ARODUCT(a nu$%e#% nu$%e) IS )'8IN d%$sMoutput5putMline(=Aodu!t of a#% H = XX a E %). 'ND ARODUCT. AROC'DUR' ARODUCT(a nu$%e#% nu$%e#! nu$%e) IS Copy rights are reserved. 173 )'8IN d%$sMoutput5putMline(=Aodu!t of a#% H = XX a E % E !). 'ND ARODUCT. )'8IN p(i). p(J). podu!t(@#C). podu!t(@#C#D). 'ND. Output0 a H C % H C Aodu!t of a#% H 13 Aodu!t of a#% H 213 )'N'BITS OB O9'RLO(DIN8 Suppoting $an7 data !o$%inations Bitting the poga$ to the use5 R'STRICTIONS ON O9'RLO(DIN8 Oveloaded poga$s with paa$ete lists that diffe onl7 %7 na$e $ust %e !alled using na$ed notation5 The paa$ete list of oveloaded poga$s $ust diffe %7 $oe than paa$ete $ode5 (ll of the oveloaded poga$s $ust %e defined within the sa$e AL?SQL s!ope o %lo!&5 Oveloaded fun!tions $ust diffe %7 $oe than thei etun t7pe5 IMAORT(NT AOINTS ()OUT SU)ARO8R(MS 6hen a stoed su%poga$ is !eated# it is stoed in the data dictionary5 The su%poga$ is stoed in !o$pile fo$ whi!h is &nown as p0code in addition to the sou!e te/t5 The p"!ode has all of the efeen!es in the su%poga$ evaluated# and the sou!e !ode is tanslated into a fo$ that is easil7 eada%le %7 AL?SQL engine5 6hen the su%poga$ is !alled# the p"!ode is ead fo$ the dis&# if ne!essa7# and e/e!uted5 Copy rights are reserved. 174 On!e it eads fo$ the dis&# the p"!ode is stoed in the shaed pool potion of the s7ste$ glo%al aea (S8()# whee it !an %e a!!essed %7 $ultiple uses as needed5 Li&e all of the !ontents of the shaed pool# p"!ode is aged out of the shaed pool a!!oding to a least e!entl7 used (LRU) algoith$5 Su%poga$s !an %e local5 Lo!al su%poga$s $ust %e de!laed in the de!laative se!tion of AL?SQL %lo!& and !alled fo$ the e/e!uta%le se!tion5 Su%poga$s !an not have the de!laative se!tion sepaatel75 Stoed su%poga$s !an have lo!al su%poga$s. Lo!al su%poga$s also !an have lo!al su%poga$s5 If the su%poga$ !ontains a vaia%le with the sa$e na$e as the !olu$n na$e of the ta%le then use the dot $ethod to diffeentiate (!ubpro"ram_name5sal)5 Su%poga$s !an %e invalidated5 AROC'DUR'S 9 BUNCTIONS Ao!edues $a7 etun though out and in out paa$etes whee as fun!tion $ust etun5 Ao!edues !an not have etun !lause whee as fun!tions $ust5 6e !an use !all state$ent die!tl7 fo e/e!uting po!edue whee as we need to de!lae a vaia%le in !ase of fun!tions5 Bun!tions !an use in sele!t state$ents whee as po!edues !an not5 Bun!tions !an !all fo$ epots envion$ent whee as po!edues !an not5 6e !an use e/e! fo e/e!uting po!edues whee as fun!tions !an not5 Bun!tion !an %e used in d%$sMoutput whee as po!edue !an not5 Ao!edue !all is a standalone e/e!uta%le state$ent whee as fun!tion !all is a pat of an e/e!uta%le state$ent5 STOR'D 9 LOC(L SU)ARO8R(MS The stoed su%poga$ is stoed in !o$piled p"!ode in the data%ase# when the po!edue is !alled it does not have to %e !o$piled5 The lo!al su%poga$ is !o$piled as pat of its !ontaining %lo!&5 If the !ontaining %lo!& is anon7$ous and is un $ultiple ti$es# the su%poga$ has to %e !o$piled ea!h ti$e5 Stoed su%poga$s !an %e !alled fo$ an7 %lo!& su%$itted %7 a use who has e/e!ute pivileges on the su%poga$5 Lo!al su%poga$s !an %e !alled onl7 fo$ the %lo!& !ontaining the su%poga$5 Copy rights are reserved. 175 )7 &eeping the stoed su%poga$ !ode sepaate fo$ the !alling %lo!&# the !alling %lo!& is shote and easie to undestand5 The lo!al su%poga$ and the !alling %lo!& ae one and the sa$e# whi!h !an lead to pat !onfusion5 If a !hange to the !alling %lo!& is $ade# the su%poga$ will %e e!o$piled as of the e!o$pilation of the !ontaining %lo!&5 The !o$piled p"!ode !an %e pinned in the shaed pool using the D)MSMS:(R'DMAOOL Aa!&age5 This !an i$pove pefo$an!e5 Lo!al su%poga$s !annot %e pinned in the shaed pool %7 the$selves5 Stand alone stoed su%poga$s !an not %e oveloaded# %ut pa!&aged su%poga$s !an %e oveloaded within the sa$e pa!&age5 Lo!al su%poga$s !an %e oveloaded within the sa$e %lo!&5 '/20 CR'(T' OR R'AL(C' AROC'DUR' A IS )'8IN d%$sMoutput5putMline(=Stoed su%poga$=). 'ND. Output0 SQL- e/e! p Stoed su%poga$ '/10 D'CL(R' AROC'DUR' A IS )'8IN d%$sMoutput5putMline(=Lo!al su%poga$=). 'ND. )'8IN p. 'ND. Output0 Lo!al su%poga$ COMAILIN8 SU)ARO8R(MS SQL- (lte po!edue A2 !o$pile. SQL- (lte fun!tion B2 !o$pile. SU)ARO8R(MS D'A'ND'CI'S Copy rights are reserved. 176 ( stoed su%poga$ is $a&ed as invalid in the data di!tiona7 if it has !o$pile eos5 ( stoed su%poga$ !an also %e!o$e invalid if a DDL opeation is pefo$ed on one of its dependent o%Je!ts5 If a su%poga$ is invalidated# the AL?SQL engine will auto$ati!all7 atte$pt to e!o$pile in the ne/t ti$e it is !alled5 If we have two po!edues li&e A2 and A1 in whi!h A2 depends on A15 If we !o$pile A1 then A2 is invalidated5 SU)ARO8R(MS D'A'ND'NCI'S IN R'MOT' D(T()(S'S 6e will !all e$ote su%poga$ using !onne!t sting li&e A2aOR(CL'. If we have two po!edues li&e A2 and A1 in whi!h A2 depends on A1 %ut A1 was in e$ote data%ase5 If we !o$pile A1 it will not invalidate A2 i$$ediatel7 %e!ause the data di!tiona7 does not ta!& e$ote dependen!ies5 Instead the validit7 of e$ote o%Je!ts is !he!&ed at unti$e5 6hen A2 is !alled# the e$ote data di!tiona7 is Uueied to dete$ine the status of A15 A2 and A1 ae !o$paed to see it A2 needs to %e e!o$piled# thee ae two diffeent $ethods of !o$paision Ti$esta$p Model Signatue Model TIM'ST(MA MOD'L This is the default $odel used %7 oa!le5 6ith this $odel# the ti$esta$ps of the last $odifi!ations of the two o%Je!ts ae !o$paed5 The la!t_ddl_time field of u!er_ob#ect! !ontains the ti$esta$p5 If the %ase o%Je!t has a newe ti$esta$p than the dependent o%Je!t# the dependent o%Je!t will %e e!o$piled5 ISSU'S 6IT: T:IS MOD'L If the o%Je!ts ae in diffeent ti$e Tones# the !o$paison is invalid5 6hen A2 is in a !lient side AL?SQL engine su!h as oa!le fo$s# in this !ase it $a7 not possi%le to e!o$pile A2# %e!ause the sou!e fo it $a7 not %e in!luded with the fo$s5 SI8N(TUR' MOD'L Copy rights are reserved. 177 6hen a po!edue is !eated# a signatue is stoed in the data di!tiona7 in addition to the p"!ode5 The signatue en!odes the t7pes and ode of the paa$etes5 6hen A2 is !o$piled the fist ti$e# the signatue of A1 is in!luded5 Thus# A2 onl7 needs to e!o$piled when the signatue of A1 !hanges5 In ode to use the signatue $odel# the paa$ete R'MOT'MD'A'ND'NCI'SMMOD' $ust %e set to SI8N(TUR'5 This is a paa$ete in the data%ase initialiTation file5 T:R'' 6(*S OB S'TTIN8 T:IS MOD' (dd the line R'MOT'MD'A'ND'NCI'SMMOD'HSI8N(TUR' to the data%ase initialiTation file5 The ne/t ti$e the data%ase is stated# the $ode will %e set to SI8N(TUR' fo all sessions5 (lte s7ste$ set e$oteMdependen!iesM$ode H signatue. This will affe!t the entie data%ase (all sessions) fo$ the ti$e the state$ent is issued5 *ou $ust have the (LT'R S*ST'M pivilege to issue this !o$$and5 (lte session set e$oteMdependen!iesM$ode H signatue. This will onl7 affe!t 7ou session ISSU'S 6IT: T:IS MOD'L Signatues don;t get $odified if the default values of fo$al paa$etes ae !hanged5 Suppose A1 has a default value fo one of its paa$etes# and A2 is using this default value5 If the default in the spe!ifi!ation fo A1 is !hanged# A2 will not %e e!o$piled %7 default5 The old value fo the default paa$ete will still %e used until A2 is $anuall7 e!o$piled5 If A2 is !alling a pa!&aged po!edue A1# and a new oveloaded vesion of A1 is added to the e$ote pa!&age# the signatue is not !hanged5 A2 will still use the old vesion(not the new oveloaded one) until A2 is e!o$piled $anuall75 BOR6(RD D'CL'R(TION )efoe going to use the po!edue in an7 othe su%poga$ o othe %lo!& # 7ou $ust de!lae the potot7pe of the po!edue in de!laative se!tion5 '/20 D'CL(R' Copy rights are reserved. 178 AROC'DUR' A2 IS )'8IN d%$sMoutput5putMline(=Bo$ po!edue p2=). p1. 'ND A2. AROC'DUR' A1 IS )'8IN d%$sMoutput5putMline(=Bo$ po!edue p1=). p4. 'ND A1. AROC'DUR' A4 IS )'8IN d%$sMoutput5putMline(=Bo$ po!edue p4=). 'ND A4. )'8IN p2. 'ND. Output0 p1. E 'RROR at line C0 OR("3DCC30 line C# !olu$n 20 ALS"334240 =A1= not de!laed in this s!ope OR("3DCC30 line C# !olu$n 20 AL?SQL0 State$ent ignoed OR("3DCC30 line 23# !olu$n 20 ALS"334240 =A4= not de!laed in this s!ope OR("3DCC30 line 23# !olu$n 20 AL?SQL0 State$ent ignoed '/10 D'CL(R' AROC'DUR' A1. "" fowad de!laation AROC'DUR' A4. AROC'DUR' A2 IS )'8IN d%$sMoutput5putMline(=Bo$ po!edue p2=). p1. 'ND A2. AROC'DUR' A1 IS )'8IN d%$sMoutput5putMline(=Bo$ po!edue p1=). Copy rights are reserved. 179 p4. 'ND A1. AROC'DUR' A4 IS )'8IN d%$sMoutput5putMline(=Bo$ po!edue p4=). 'ND A4. )'8IN p2. 'ND. Output0 Bo$ po!edue p2 Bo$ po!edue p1 Bo$ po!edue p4 ARI9IL'8'S (ND STOR'D SU)ARO8R(MS '+'CUT' AR'9IL'8' Bo stoed su%poga$s and pa!&ages the elevant pivilege is '+'CUT'5 If use ( had the po!edue !alled e$pMpo! then use ( gants e/e!ute pivilege on po!edue to use ) with the following !o$$and5 SQL- 8ant e/e!ute on e$pMpo! to use )5 Then use ) !an un the po!edue %7 issuing SQL- '/e! use (5e$pMpo! use( !eated the following po!edue CR'(T' OR R'AL(C' AROC'DUR' A IS !uso is sele!t Efo$ student2. )'8IN fo v in ! loop inset into student1 values(v5no#v5na$e#v5$a&s). end loop. 'ND A. use( ganted e/e!ute pivilege to use) using SQL- gant e/e!ute on p to use) Copy rights are reserved. 180 Then use) e/e!uted the po!edue SQL- '/e! use(5p If suppose use) also having student1 ta%le then whi!h ta%le will populate whethe use(;s o use);s5 The answe is use(;s student1 ta%le onl7 %e!ause %7 default the po!edue will e/e!ute unde the pivlige set of its owne5 The a%ove po!edue is &nown as define;s po!edue5 :O6 TO AOAUL(T' US'R );s T()L' Oa!le intodu!es 5nvoer;! and -e'iner;! ri")t!. )7 default it will use the define;s ights5 (n invo&e;s ights outine !an %e !eated %7 using (UT:ID !lause to populate the use);s ta%le5 It is valid fo stand"alone su%poga$s# pa!&age spe!ifi!ations# and o%Je!t t7pe spe!ifi!ations onl75 use( !eated the following po!edue CR'(T' OR R'AL(C' AROC'DUR' A (UT:ID CURR'NTMUS'R IS !uso is sele!t Efo$ student2. )'8IN fo v in ! loop inset into student1 values(v5no#v5na$e#v5$a&s). end loop. 'ND A. Then gant e/e!ute pivilege on p to use)5 '/e!uting the po!edue %7 use)# whi!h populates use);s ta%le5 The a%ove po!edue is !alled invo&e;s po!edue5 Instead of !uentMuse of authid !lause# if 7ou use define then it will %e !alled define; po!edue5 STOR'D SU)ARO8R(MS (ND ROL'S we have two uses sað and sudha in whi!h sað has student ta%le and sudha does not5 Copy rights are reserved. 181 Sudha is going to !eate a po!edue %ased on student ta%le owned %7 sað5 )efoe doing this sað $ust gant the pe$issions on this ta%le to sudha5 SQL- !onn sað?sað SQL- gant all on student to sudha. then sudha !an !eate po!edue SQL- !onn sudha?sudha CR'(T' OR R'AL(C' AROC'DUR' A IS !uso ! is sele!t Efo$ sað5student. )'8IN fo v in ! loop d%$sMoutput5putMline(KNo H K XX v5no). end loop. 'ND A. hee po!edue will %e !eated5 If the sa$e pivilege was ganted though a ole it wont !eate the po!edue5 '/a$ine the following !ode SQL- !onn sað?sað SQL- !eate ole saðMole. SQL- gant all on student to saðMole. SQL- gant saðMole to sudha. then !onn sudha?sudha CR'(T' OR R'AL(C' AROC'DUR' A IS !uso ! is sele!t Efo$ sað5student. )'8IN fo v in ! loop d%$sMoutput5putMline(KNo H K XX v5no). end loop. 'ND A. The a%ove !ode will aise eo instead of !eating po!edue 5 This is %e!ause of eal7 %inding whi!h AL?SQL uses %7 default in whi!h efeen!es ae evaluated in !o$pile ti$e %ut when 7ou ae using a ole this will affe!t i$$ediatel75 ISSU'S 6IT: IN9OF'R;S RI8:TS Copy rights are reserved. 182 In an invo&e;s ights outine# e/tenal efeen!es in SQL state$ents will %e esolved using the !alle;s pivilege set5 )ut efeen!es in AL?SQL state$ents ae still esolved unde the owne;s pivilege set5 TRI88'RS# 9I'6S (ND IN9OF'R;S RI8:TS ( data%ase tigge will alwa7s %e e/e!uted with define;s ights and will e/e!ute unde the pivilege set of the s!he$a that owns the tiggeing ta%le5 This is also tue fo AL?SQL fun!tion that is !alled fo$ a view5 In this !ase# the fun!tion will e/e!ute unde the pivilege set of the view;s owne5 Copy rights are reserved. 183 A(CF(8'S ( paca"e is a !ontaine fo elated o%Je!ts5 It has spe!ifi!ation and %od75 'a!h of the$ is stoed sepaatel7 in data di!tiona75 A(CF(8' S*NT(+ Ceate o epla!e pa!&age ,paca"e_name- is "" pa!&age spe!ifi!ation in!ludes su%poga$s signatues# !usos and glo%al o pu%li! vaia%les5 'nd ,paca"e_name-. Ceate o epla!e pa!&age %od7 ,paca"e_name- is "" pa!&age %od7 in!ludes %od7 fo all the su%poga$s de!laed in the spe!# pivate 9aia%les and !usos5 )egin "" initialiTation se!tion '/!eption "" '/!eption handling se!iton 'nd ,paca"e_name-. IMAORT(NT AOIN8S ()OUT A(CF(8'S The fist ti$e a pa!&aged su%poga$ is !alled o an7 efeen!e to a pa!&aged vaia%le o t7pe is $ade# the pa!&age is instantiated5 'a!h session will have its own !op7 of pa!&aged vaia%les# ensuing that two sessions e/e!uting su%poga$s in the sa$e pa!&age use diffeent $e$o7 lo!ations5 In $an7 !ases initialiTation needs to %e un the fist ti$e the pa!&age is instantiated within a session5 This !an %e done %7 adding initialiTation se!tion to the pa!&age %od7 afte all the o%Je!ts5 Aa!&ages ae stoed in the data di!tiona7 and !an not %e lo!al5 Aa!&aged su%poga$s has an advantage ove stand alone su%poga$5 6hen eve an7 efeen!e to pa!&age# the whole pa!&age p"!ode was stoed in shaed pool of S8(5 Aa!&age $a7 have lo!al su%poga$s5 *ou !an in!lude authid !lause inside the pa!&age spe! not in the %od75 The e/e!ution se!tion of a pa!&age is &now as initialiTation se!tion5 *ou !an have an e/!eption se!tion at the %otto$ of a pa!&age %od75 Aa!&ages su%poga$s ae not invalidated5 Copy rights are reserved. 184 COMAILIN8 A(CF(8'S SQL- (lte pa!&age AF8 !o$pile. SQL- (lte pa!&age AF8 !o$pile spe!ifi!ation. SQL- (lte pa!&age AF8 !o$pile %od7. A(CF(8' D'A'ND'NCI'S The pa!&age %od7 depends on the so$e o%Je!ts and the pa!&age heade5 The pa!&age heade does not depend on the pa!&age %od7# whi!h is an advantage of pa!&ages5 6e !an !hange the pa!&age %od7 with out !hanging the heade5 A(CF(8' RUNTIM' ST(T' Aa!&age unti$e state is diffe fo the following pa!&ages5 Seiall7 eusa%le pa!&ages Non seiall7 eusa%le pa!&ages S'RI(LL* R'US()L' A(CF(8'S To fo!e the oa!le to use seiall7 eusa%le vesion then in!lude AR(8M( S'RI(LL*MR'US()L' in %oth pa!&age spe! and %od7# '/a$ine the following pa!&age5 CR'(T' OR R'AL(C' A(CF(8' AF8 IS pag$a seiall7Meusa%le. po!edue e$pMpo!. 'ND AF8. CR'(T' OR R'AL(C' A(CF(8' )OD* AF8 IS pag$a seiall7Meusa%le. !uso ! is sele!t ena$e fo$ e$p. AROC'DUR' 'MAMAROC IS vMena$e e$p5ena$eLt7pe. vMflag %oolean 0H tue. vMnu$ows nu$%e 0H 3. )'8IN if not !Lisopen then Copy rights are reserved. 185 open !. end if. while vMflag loop fet!h ! into vMena$e. vMnu$ows 0H vMnu$ows G 2. if vMnu$ows H C then vMflag 0H false. end if. d%$sMoutput5putMline(='na$e H = XX vMena$e). end loop. 'ND 'MAMAROC. 'ND AF8. SQL- e/e! p&g5e$pMpo! 'na$e H SMIT: 'na$e H (LL'N 'na$e H 6(RD 'na$e H >ON'S 'na$e H M(RTIN SQL- e/e! p&g5e$pMpo! 'na$e H SMIT: 'na$e H (LL'N 'na$e H 6(RD 'na$e H >ON'S 'na$e H M(RTIN The a%ove pa!&age displa7s the sa$e output fo ea!h e/e!ution even though the !uso is not !losed5 )e!ause the seiall7 eusa%le vesion esets the state of the !uso ea!h ti$e it was !alled5 NON S'RI(LL * R'US()L' A(CF(8'S This is the default vesion used %7 the oa!le# e/a$ine the following pa!&age5 CR'(T' OR R'AL(C' A(CF(8' AF8 IS po!edue e$pMpo!. 'ND AF8. Copy rights are reserved. 186 CR'(T' OR R'AL(C' A(CF(8' )OD* AF8 IS !uso ! is sele!t ena$e fo$ e$p. AROC'DUR' 'MAMAROC IS vMena$e e$p5ena$eLt7pe. vMflag %oolean 0H tue. vMnu$ows nu$%e 0H 3. )'8IN if not !Lisopen then open !. end if. while vMflag loop fet!h ! into vMena$e. vMnu$ows 0H vMnu$ows G 2. if vMnu$ows H C then vMflag 0H false. end if. d%$sMoutput5putMline(='na$e H = XX vMena$e). end loop. 'ND 'MAMAROC. 'ND AF8. SQL- e/e! p&g5e$pMpo! 'na$e H SMIT: 'na$e H (LL'N 'na$e H 6(RD 'na$e H >ON'S 'na$e H M(RTIN SQL- e/e! p&g5e$pMpo! 'na$e H )L(F' 'na$e H CL(RF 'na$e H SCOTT 'na$e H FIN8 'na$e H TURN'R The a%ove pa!&age displa7s the diffeent output fo ea!h e/e!ution even though the !uso is not !losed5 )e!ause the non"seiall7 eusa%le vesion e$ains the state of the !uso ove data%ase !alls5 Copy rights are reserved. 187 D'A'ND'NCI'S OB A(CF(8' RUNTIM' ST(T' Dependen!ies !an e/ists %etween pa!&age state and anon7$ous %lo!&s5 '/a$ine the following poga$ Ceate this pa!&age in fist session CR'(T' OR R'AL(C' A(CF(8' AF8 IS v nu$%e 0H C. po!edue p. 'ND AF8. CR'(T' OR R'AL(C' A(CF(8' )OD* AF8 IS AROC'DUR' A IS )'8IN d%$sMoutput5putMline(=v H = XX v). v 0H 23. d%$sMoutput5putMline(=v H = XX v). 'ND A. 'ND AF8. Conne!t to se!ond session# un the following !ode5 )'8IN p&g5p. 'ND. The a%ove !ode wil wo&5 8o %a!& to fist session and e!eate the pa!&age using !eate5 Then !onne!t to se!ond session and un the following !ode again5 )'8IN p&g5p. 'ND. This a%ove !ode will not wo& %e!ause of the following5 The anon7$ous %lo!& depends on p&g5 This is !o$pile ti$e dependen!75 Thee is also a unti$e dependen!7 on the pa!&aged vaia%les# sin!e ea!h session has its own !op7 of pa!&aged vaia%les5 Copy rights are reserved. 188 Thus when p&g is e!o$piled the unti$e dependen!7 is followed# whi!h invalidates the %lo!& and aises the oa!le eo5 Runti$e dependen!ies e/ist onl7 on pa!&age state5 This in!ludes vaia%les and !usos de!laed in a pa!&age5 If the pa!&age had no glo%al vaia%les# the se!ond e/e!ution of the anon7$ous %lo!& would have su!!eeded5 AURIT* L'9'LS In geneal# !alls to su%poga$s ae po!edual# the7 !annot %e !alled fo$ SQL state$ents5 :oweve# if a stand"alone o pa!&aged fun!tion $eets !etain esti!tions# it !an %e !alled duing e/e!ution of a SQL state$ent5 Use"defined fun!tions ae !alled the sa$e wa7 as %uilt"in fun!tions %ut it $ust $eet diffeent esti!tions5 These esti!tions ae defined in te$s of puit7 levels5 Thee ae fou t7pes of puit7 levels5 6NDS "" 6ites No Data%ase State RNDS "" Reads No Data%ase State 6NAS "" 6ites No Aa!&age State RNAS "" Reads No Aa!&age State In addition to the pe!eding esti!tions# a use"defined fun!tion $ust also $eet the following eUuie$ents to %e !alled fo$ a SQL state$ent5 The fun!tion has to %e stoed in the data%ase# eithe stand"alone o as pat of a pa!&age5 The fun!tion !an ta&e onl7 in paa$etes5 The fo$al paa$etes $ust use onl7 data%ase t7pes# not AL?SQL t7pes su!h as %oolean o e!od5 The etun t7pe of the fun!tion $ust also %e a data%ase t7pe5 The fun!tion $ust not end the !uent tansa!tion with !o$$it o oll%a!&# o oll%a!& to a savepoint pio to the fun!tion e/e!ution5 It also $ust not issue an7 alte session o alte s7ste$ !o$$ands5 R'STRICTMR'B'R'NC'S Bo pa!&aged fun!tions# howeve# the R'STRICTMR'B'R'NC'S pag$a is eUuied to spe!if7 the puit7 level of a given fun!tion5 Copy rights are reserved. 189 S7nta/0 AR(8M( R'STRICTMR'B'R'NC'S(!ubpro"ram_name or paca"e_name# 6NDS N#6NASO N#RNDSO N#RNASO). '/0 CR'(T' OR R'AL(C' A(CF(8' AF8 IS fun!tion fun2 etun va!ha. pag$a esti!tMefeen!es(fun2#wnds). fun!tion fun1 etun va!ha. pag$a esti!tMefeen!es(fun1#wnds). 'ND AF8. CR'(T' OR R'AL(C' A(CF(8' )OD* AF8 IS BUNCTION BUN2 etun va!ha IS )'8IN update dept set deptno H 22. etun =hello=. 'ND BUN2. BUNCTION BUN1 etun va!ha IS )'8IN update dept set dna$e H=aa=. etun =hello=. 'ND BUN1. 'ND AF8. The a%ove pa!&age %od7 will not !eated# it will give the following eos5 ALS"33@C10 Su%poga$ =BUN2= violates its asso!iated pag$a ALS"33@C10 Su%poga$ =BUN1= violates its asso!iated pag$a CR'(T' OR R'AL(C' A(CF(8' )OD* AF8 IS BUNCTION BUN2 etun va!ha IS )'8IN etun =hello=. 'ND BUN2. BUNCTION BUN1 etun va!ha IS )'8IN etun =hello=. 'ND BUN1. 'ND AF8. Now the pa!&age %od7 will %e !eated5 D'B(ULT Copy rights are reserved. 190 If thee is no R'STRICTMR'B'R'NC'S pag$a asso!iated with a given pa!&aged fun!tion# it will not have an7 puit7 level asseted5 :oweve# 7ou !an !hange the default puit7 level fo a pa!&age5 The D'B(ULT &e7wod is used instead of the su%poga$ na$e in the pag$a5 '/0 CR'(T' OR R'AL(C' A(CF(8' AF8 IS pag$a esti!tMefeen!es(default#wnds). fun!tion fun2 etun va!ha. fun!tion fun1 etun va!ha. 'ND AF8. CR'(T' OR R'AL(C' A(CF(8' )OD* AF8 IS BUNCTION BUN2 etun va!ha IS )'8IN update dept set deptno H 22. etun =hello=. 'ND BUN2. BUNCTION BUN1 etun va!ha IS )'8IN update dept set dna$e H=aa=. etun =hello=. 'ND BUN1. 'ND AF8. The a%ove pa!&age %od7 will not !eated# it will give the following eos %e!ause the pag$a will appl7 to all the fun!tions5 ALS"33@C10 Su%poga$ =BUN2= violates its asso!iated pag$a ALS"33@C10 Su%poga$ =BUN1= violates its asso!iated pag$a CR'(T' OR R'AL(C' A(CF(8' )OD* AF8 IS BUNCTION BUN2 etun va!ha IS )'8IN etun =hello=. 'ND BUN2. BUNCTION BUN1 etun va!ha IS )'8IN etun =hello=. 'ND BUN1. 'ND AF8. Now the pa!&age %od7 will %e !eated5 Copy rights are reserved. 191 TRUST If the TRUST &e7wod is pesent# the esti!tions listed in the pag$a ae not enfo!ed5 Rathe# the7 ae tusted to %e tue5 '/0 CR'(T' OR R'AL(C' A(CF(8' AF8 IS fun!tion fun2 etun va!ha. pag$a esti!tMefeen!es(fun2#wnds#tust). fun!tion fun1 etun va!ha. pag$a esti!tMefeen!es(fun1#wnds#tust). 'ND AF8. CR'(T' OR R'AL(C' A(CF(8' )OD* AF8 IS BUNCTION BUN2 etun va!ha IS )'8IN update dept set deptno H 22. etun =hello=. 'ND BUN2. BUNCTION BUN1 etun va!ha IS )'8IN update dept set dna$e H=aa=. etun =hello=. 'ND BUN1. 'ND AF8. The a%ove pa!&age will %e !eated su!!essfull75 IMAORT(NT AOINTS ()OUT R'STRICTMR'B'R'NC'S This pag$a !an appea an7whee in the pa!&age spe!ifi!ation# afte the fun!tion de!laation5 It !an appl7 to onl7 one fun!tion definition5 Bo oveload fun!tions# the pag$a applies to the neaest definition pio to the Aag$a5 This pag$a is eUuied onl7 fo pa!&ages fun!tions not fo stand"alone fun!tions5 The Aag$a !an %e de!laed onl7 inside the pa!&age spe!ifi!ation5 The pag$a is !he!&ed at !o$pile ti$e# not unti$e5 Copy rights are reserved. 192 It is possi%le to spe!if7 without an7 puit7 levels when tust o !o$%ination of default and tust &e7wods ae pesent5 AINNIN8 IN T:' S:(R'D AOOL The !)ared pool is the potion of the S8S that !ontains# a$ong othe things# the p"!ode of !o$piled su%poga$s as the7 ae un5 The fist ti$e a stoed a stoe su%poga$ is !alled# the p"!ode is loaded fo$ dis& into the shaed pool5 On!e the o%Je!t is no longe efeen!ed# it is fee to %e aged out5 O%Je!ts ae aged out of the shaed pool using an LRU(Least Re!entl7 Used) algoith$5 The D)MSMS:(R'DMAOOL pa!&age allows 7ou to pin o%Je!ts in the shaed pool5 6hen an o%Je!t is pinned# it will neve %e aged out until 7ou eUuest it# no $atte how full the pool gets o how often the o%Je!t is a!!essed5 This !an i$pove pefo$an!e# as it ta&es ti$e to eload a pa!&age fo$ dis&5 D)MSMS:(R'DMAOOL has fou po!edues F''A UNF''A SIZ'S ()ORT'DMR'QU'STMT:R'S:OLD F''A The D)MSMS:(R'DMAOOL5F''A po!edue is used to pin o%Je!ts in the pool5 S7nta/0 AROC'DUR' F''A(ob#ect_name va!ha1#'la" !ha default KA;). :ee the flag epesents diffeent t7pes of flag values fo diffeent t7pes of o%Je!ts5 A "" Aa!&age# fun!tion o po!edue Q "" SeUuen!e R "" Tigge C "" SQL Cuso T "" O%Je!t t7pe >S "" >ava sou!e >C "" >ava !lass >R "" >ava esou!e Copy rights are reserved. 193 >D "" >ava shaed data UNF''A UNF''A is the onl7 wa7 to e$ove a &ept o%Je!t fo$ the shaed pool# without estating the data%ase5 Fept o%Je!ts ae neve aged out auto$ati!all75 S7nta/0 AROC'DUR' UNF''A(ob#ect_name va!ha1# 'la" !ha default KA;). SIZ'S SIZ'S will e!ho the !ontents of the shaed pool to the s!een5 S7nta/0 AROC'DUR' SIZ'S(min!i,e nu$%e). O%Je!ts with geate than the min!i,e will %e etuned5 SIZ'S uses D)MSMOUTAUT to etun the data5 ()ORT'DMR'QU'STMT:R'S:OLD 6hen the data%ase dete$ines that thee is not enough $e$o7 in the shaed pool to satisf7 a given eUuest# it will %egin aging o%Je!ts out until thee is enough $e$o75 It enough o%Je!ts ae aged out# this !an have a pefo$an!e i$pa!t on othe data%ase sessions5 The ()ORT'DMR'QU'STMT:R'S:OLD !an %e used to e$ed7 this5 S7nta/0 AROC'DUR' ()ORT'DMR'QU'STMT:R'S:OLD(t)re!)old_!i,e nu$%e). On!e this po!edue is !alled# oa!le will not stat aging o%Je!ts fo$ the pool unless at least t)re!)old_!i,e %7tes is needed5 D(T( MOD'L BOR SU)ARO8R(MS (ND A(CF(8'S US'RMO)>'CTS US'RMSOURC' US'RM'RRORS D)(MO)>'CTS D)(MSOURC' D)(M'RRORS (LLMO)>'CTS Copy rights are reserved. 194 (LLMSOURC' (LLM'RRORS CURSORS Cur!or is a pointe to $e$o7 lo!ation whi!h is !alled as conte(t area whi!h !ontains the info$ation ne!essa7 fo po!essing# in!luding the nu$%e of ows po!essed %7 the state$ent# a pointe to the pased epesentation of the state$ent# and the active !et whi!h is the set of ows etuned %7 the Uue75 Cuso !ontains two pats :eade )od7 Copy rights are reserved. 195 :eade in!ludes !uso na$e# an7 paa$etes and the t7pe of data %eing loaded5 )od7 in!ludes the sele!t state$ent5 '/0 Cuso !(dno in nu$%e) etun deptLowt7pe is sele!t Efo$ dept. In the a%ove :eade \ !uso !(dno in nu$%e) etun deptLowt7pe )od7 \ sele!t Efo$ dept CURSOR T*A'S I$pli!it (SQL) '/pli!it Aaa$eteiTed !usos R'B !usos CURSOR ST(8'S Open Bet!h Close CURSOR (TTRI)UT'S Lfound Lnotfound Low!ount Lisopen L%ul&Mow!ount L%ul&Me/!eptions CURSOR D'CL'R(TION S7nta/0 Cuso ,cur!or_name- is !elect !tatement. '/0 Cuso ! is sele!t Efo$ dept. Copy rights are reserved. 196 CURSOR LOOAS Si$ple loop 6hile loop Bo loop SIMAL' LOOA S7nta/0 Loop Bet!h ,cur!or_name- into ,record_variable-. '/it when ,cur!or_name- L notfound. ,!tatement!-. 'nd loop. '/0 D'CL(R' !uso ! is sele!t E fo$ student. vMstud studentLowt7pe. )'8IN open !. loop fet!h ! into vMstud. e/it when !Lnotfound. d%$sMoutput5putMline(=Na$e H = XX vMstud5na$e). end loop. !lose !. 'ND. Output0 Na$e H sað Na$e H sinu Na$e H satish Na$e H sudha 6:IL' LOOA S7nta/0 6hile ,cur!or_name- L found loop Bet!h ,cur!or_name- nto ,record_variable-. Copy rights are reserved. 197 ,!tatement!-. 'nd loop. '/0 D'CL(R' !uso ! is sele!t E fo$ student. vMstud studentLowt7pe. )'8IN open !. fet!h ! into vMstud. while !Lfound loop fet!h ! into vMstud. d%$sMoutput5putMline(=Na$e H = XX vMstud5na$e). end loop. !lose !. 'ND. Output0 Na$e H sað Na$e H sinu Na$e H satish Na$e H sudha BOR LOOA S7nta/0 fo ,record_variable- in ,cur!or_name- loop ,!tatement!-. 'nd loop. '/0 D'CL(R' !uso ! is sele!t E fo$ student. )'8IN fo vMstud in ! loop d%$sMoutput5putMline(=Na$e H = XX vMstud5na$e). end loop. 'ND. Output0 Copy rights are reserved. 198 Na$e H sað Na$e H sinu Na$e H satish Na$e H sudha A(R(M'T(RIZ'D CURSORS This was used when 7ou ae going to use the !uso in $oe than one pla!e with diffeent values fo the sa$e whee !lause5 Cuso paa$etes $ust %e in $ode5 Cuso paa$etes $a7 have default values5 The s!ope of !uso paa$ete is within the sele!t state$ent5 '/0 D'CL(R' !uso !(dno in nu$%e) is sele!t E fo$ dept whee deptno H dno. vMdept deptLowt7pe. )'8IN open !(13). loop fet!h ! into vMdept. e/it when !Lnotfound. d%$sMoutput5putMline(=Dna$e H = XX vMdept5dna$e XX = Lo! H = XX vMdept5lo!). end loop. !lose !. 'ND. Output0 Dna$e H R'S'(RC: Lo! H D(LL(S A(CF(8'D CURSORS 6IT: :'(D'R IN SA'C (ND )OD* IN A(CF(8' )OD* !usos de!laed in pa!&ages will not !lose auto$ati!all75 In pa!&aged !usos 7ou !an $odif7 the sele!t state$ent without $a&ing an7 !hanges to the !uso heade in the pa!&age spe!ifi!ation5 Aa!&aged !usos with $ust %e defined in the pa!&age %od7 itself# and then use it as glo%al fo the pa!&age5 *ou !an not define the pa!&aged !uso in an7 su%poga$s5 Cuso de!laation in pa!&age with out %od7 needs the etun !lause5 Copy rights are reserved. 199 '/20 CR'(T' OR R'AL(C' A(CF(8' AF8 IS !uso ! etun deptLowt7pe is sele!t E fo$ dept. po!edue po! is 'ND AF8. CR'(T' OR R'AL(C' A(FC(8' )OD* AF8 IS !uso ! etun deptLowt7pe is sele!t E fo$ dept. AROC'DUR' AROC IS )'8IN fo v in ! loop d%$sMoutput5putMline(=Deptno H = XX v5deptno XX = Dna$e H = XX v5dna$e XX = Lo! H = XX v5lo!). end loop. 'ND AROC. 'ND AF8. Output0 SQL- e/e! p&g5po! Deptno H 23 Dna$e H (CCOUNTIN8 Lo! H N'6 *ORF Deptno H 13 Dna$e H R'S'(RC: Lo! H D(LL(S Deptno H 43 Dna$e H S(L'S Lo! H C:IC(8O Deptno H @3 Dna$e H OA'R(TIONS Lo! H )OSTON '/10 CR'(T' OR R'AL(C' A(FC(8' )OD* AF8 IS !uso ! etun deptLowt7pe is sele!t E fo$ dept whee deptno - 13. AROC'DUR' AROC IS )'8IN fo v in ! loop d%$sMoutput5putMline(=Deptno H = XX v5deptno XX = Dna$e H = XX v5dna$e XX = Lo! H = XX v5lo!). end loop. 'ND AROC. 'ND AF8. Output0 SQL- e/e! p&g5po! Deptno H 43 Dna$e H S(L'S Lo! H C:IC(8O Deptno H @3 Dna$e H OA'R(TIONS Lo! H )OSTON Copy rights are reserved. 200 R'B CURSORS (ND CURSOR 9(RI()L'S This is un!onstained !uso whi!h will etun diffeent t7pes depends upon the use input5 Ref !usos !an not %e !losed i$pli!itl75 Ref !uso with etun t7pe is !alled !tron" cur!or5 Ref !uso with out etun t7pe is !alled wea cur!or5 *ou !an de!lae ef !uso t7pe in pa!&age spe! as well as %od75 *ou !an de!lae ef !uso t7pes in lo!al su%poga$s o anon7$ous %lo!&s5 Cuso vaia%les !an %e assigned fo$ one to anothe5 *ou !an de!lae a !uso vaia%le in one s!ope and assign anothe !uso vaia%le with diffeent s!ope# then 7ou !an use the !uso vaia%le even though the assigned !uso vaia%le goes out of s!ope5 Cuso vaia%les !an %e passed as a paa$etes to the su%poga$s5 Cuso vaia%les $odes ae in o out o in out5 Cuso vaia%les !an not %e de!laed in pa!&age spe! and pa!&age %od7 (e/!luding su%poga$s)5 *ou !an not use e$ote po!edue !alls to pass !uso vaia%les fo$ one seve to anothe5 Cuso vaia%les !an not use fo update !lause5 *ou !an not assign nulls to !uso vaia%les5 *ou !an not !o$pae !uso vaia%les fo eUualit7# ineUualit7 and nullit75 '/0 CR'(T' OR R'AL(C' AROC'DUR' R'BMCURSOR(T()L'MN(M' IN 9(RC:(R) IS t7pe t is ef !uso. ! t. vMdept deptLowt7pe. t7pe is e!od(ena$e e$p5ena$eLt7pe#Jo% e$p5Jo%Lt7pe#sal e$p5salLt7pe). vMe$p . vMstud student5na$eLt7pe. )'8IN if ta%leMna$e H =D'AT= then open ! fo sele!t E fo$ dept. elsif ta%leMna$e H ='MA= then open ! fo sele!t ena$e#Jo%#sal fo$ e$p. Copy rights are reserved. 201 elsif ta%leMna$e H =STUD'NT= then open ! fo sele!t na$e fo$ student. end if. loop if ta%leMna$e H =D'AT= then fet!h ! into vMdept. e/it when !Lnotfound. d%$sMoutput5putMline(=Deptno H = XX vMdept5deptno XX = Dna$e H = XX vMdept5dna$e XX = Lo! H = XX vMdept5lo!). elsif ta%leMna$e H ='MA= then fet!h ! into vMe$p. e/it when !Lnotfound. d%$sMoutput5putMline(='na$e H = XX vMe$p5ena$e XX = >o% H = XX vMe$p5Jo% XX = Sal H = XX vMe$p5sal). elsif ta%leMna$e H =STUD'NT= then fet!h ! into vMstud. e/it when !Lnotfound. d%$sMoutput5putMline(=Na$e H = XX vMstud). end if. end loop. !lose !. 'ND. Output0 SQL- e/e! efM!uso(=D'AT=) Deptno H 23 Dna$e H (CCOUNTIN8 Lo! H N'6 *ORF Deptno H 13 Dna$e H R'S'(RC: Lo! H D(LL(S Deptno H 43 Dna$e H S(L'S Lo! H C:IC(8O Deptno H @3 Dna$e H OA'R(TIONS Lo! H )OSTON SQL- e/e! efM!uso(='MA=) 'na$e H SMIT: >o% H CL'RF Sal H W33 'na$e H (LL'N >o% H S(L'SM(N Sal H 2D33 'na$e H 6(RD >o% H S(L'SM(N Sal H 21C3 'na$e H >ON'S >o% H M(N(8'R Sal H 1SVC 'na$e H M(RTIN >o% H S(L'SM(N Sal H 21C3 'na$e H )L(F' >o% H M(N(8'R Sal H 1WC3 'na$e H CL(RF >o% H M(N(8'R Sal H 1@C3 Copy rights are reserved. 202 'na$e H SCOTT >o% H (N(L*ST Sal H 4333 'na$e H FIN8 >o% H AR'SID'NT Sal H C333 'na$e H TURN'R >o% H S(L'SM(N Sal H 2C33 'na$e H (D(MS >o% H CL'RF Sal H 2233 'na$e H >(M'S >o% H CL'RF Sal H SC3 'na$e H BORD >o% H (N(L*ST Sal H 4333 'na$e H MILL'R >o% H CL'RF Sal H 2433 SQL- e/e! efM!uso(=STUD'NT=) Na$e H sað Na$e H sinu Na$e H satish Na$e H sudha CURSOR '+AR'SSIONS *ou !an use !uso e/pessions in e/pli!it !usos5 *ou !an use !uso e/pessions in d7na$i! SQL5 *ou !an use !uso e/pessions in R'B !uso de!laations and vaia%les5 *ou !an not use !uso e/pessions in i$pli!it !usos5 Oa!le opens the nested !uso defined %7 a !uso e/pession i$pli!itl7 as soon as it fet!hes the data !ontaining the !uso e/pession fo$ the paent o oute !uso5 Nested !uso !loses if 7ou !lose e/pli!itl75 Nested !uso !loses wheneve the oute o paent !uso is e/e!uted again o !losed o !an!eled5 Nested !uso !loses wheneve an e/!eption is aised while fet!hing data fo$ a paent !uso5 Cuso e/pessions !an not %e used when de!laing a view5 Cuso e/pessions !an %e used as an agu$ent to ta%le fun!tion5 *ou !an not pefo$ %ind and e/e!ute opeations on !uso e/pessions when using the !uso e/pessions in d7na$i! SQL5 USIN8 N'ST'D CURSORS OR CURSOR '+AR'SSIONS '/0 D'CL(R' !uso ! is sele!t ena$e#!uso(sele!t dna$e fo$ dept d whee e5e$pno H d5deptno) fo$ e$p e. t7pe t is ef !uso. Copy rights are reserved. 203 !2 t. !1 t. v2 e$p5ena$eLt7pe. v1 dept5dna$eLt7pe. )'8IN open !. loop fet!h !2 into v2. e/it when !2Lnotfound. fet!h !1 into v1. e/it when !1Lnotfound. d%$sMoutput5putMline(='na$e H = XX v2 XX = Dna$e H = XX v1). end loop. end loop. !lose !. 'ND. CURSOR CL(US'S Retun Bo update 6hee !uent of )ul& !olle!t R'TURN Cuso ! etun deptLowt7pe is sele!t Efo$ dept. O Cuso !2 is sele!t Efo$ dept. Cuso ! etun !2Lowt7pe is sele!t Efo$ dept. O T7pe t is e!od(deptno dept5deptnoLt7pe# dna$e dept5dna$eLt7pe). Cuso ! etun t is sele!t deptno# dna$e fo$ dept. BOR UAD(T' (ND 6:'R' CURR'NT OB No$all7# a sele!t opeation will not ta&e an7 lo!&s on the ows %eing a!!essed5 This will allow othe sessions !onne!ted to the data%ase to !hange the data %eing sele!ted5 The Copy rights are reserved. 204 esult set is still !onsistent5 (t open ti$e# when the a!tive set is dete$ined# oa!le ta&es a snapshot of the ta%le5 (n7 !hanges that have %een !o$$itted pio to this point ae efle!ted in the a!tive set5 (n7 !hanges $ade afte this point# even if the7 ae !o$$itted# ae not efle!ted unless the !uso is eopened# whi!h will evaluate the a!tive set again5 :oweve# if the BOR UAD(T' !aluse is pesent# e/!lusive ow lo!&s ae ta&en on the ows in the a!tive set %efoe the open etuns5 These lo!&s pevent othe sessions fo$ !hanging the ows in the a!tive set until the tansa!tion is !o$$itted o olled %a!&5 If anothe session alead7 has lo!&s on the ows in the a!tive set# then S'L'CT R BOR UAD(T' opeation will wait fo these lo!&s to %e eleased %7 the othe session5 Thee is no ti$e"out fo this waiting peiod5 The S'L'CTRBOR UAD(T' will hang until the othe session eleases the lo!&5 To handle this situation# the NO6(IT !lause is availa%le5 S7nta/0 Sele!t Rfo$ R fo update of !olu$nMna$e Nwait nO. If the !uso is de!laed with the BOR UAD(T' !lause# the 6:'R' CURR'NT OB !lause !an %e used in an update o delete state$ent5 S7nta/0 6hee !uent of !uso. '/0 D'CL(R' !uso ! is sele!t E fo$ dept fo update of dna$e. )'8IN fo v in ! loop update dept set dna$e H =aa= whee !uent of !. !o$$it. end loop. 'ND. )ULF COLL'CT This is used fo aa7 fet!hes 6ith this 7ou !an etieve $ultiple ows of data with a single oundtip5 This edu!es the nu$%e of !onte/t swit!hes %etween the pl?sUl and sUl engines5 Redu!es the ovehead of etieving data5 *ou !an use %ul& !olle!t in %oth d7na$i! and stati! sUl5 *ou !an use %ul& !olle!t in sele!t# fet!h into and etuning into !lauses5 Copy rights are reserved. 205 SQL engine auto$ati!all7 initialiTes and e/tends the !olle!tions 7ou efeen!e in the %ul& !olle!t !lause5 )ul& !olle!t opeation e$pties the !olle!tion efeen!ed in the into !lause %efoe e/e!uting the Uue75 *ou !an use the li$it !lause of %ul& !olle!t to esti!t the no of ows etieved5 *ou !an fet!h into $ulti%le !olle!tions with one !olu$n ea!h5 Using the etuning !lause we !an etun data to the anothe !olle!tion5 )ULF COLL'CT IN B'TC: '/0 D'CL(R' T7pe t is ta%le of deptLowt7pe. nt t. Cuso ! is sele!t Efo$ dept. )'8IN Open !. Bet!h ! %ul& !olle!t into nt. Close !. Bo i in nt5fist55nt5last loop d%$sMoutput5putMline(=Dna$e H = XX nt(i)5dna$e XX = Lo! H = XX nt(i)5lo!). end loop. 'ND. Output0 Dna$e H (CCOUNTIN8 Lo! H N'6 *ORF Dna$e H R'S'(RC: Lo! H D(LL(S Dna$e H S(L'S Lo! H C:IC(8O Dna$e H OA'R(TIONS Lo! H )OSTON )ULF COLL'CT IN S'L'CT '/0 D'CL(R' T7pe t is ta%le of deptLowt7pe. Nt t. )'8IN Sele!t E %ul& !olle!t into nt fo$ dept. fo i in nt5fist55nt5last loop d%$sMoutput5putMline(=Dna$e H = XX nt(i)5dna$e XX = Lo! H = XX Copy rights are reserved. 206 nt(i)5lo!). end loop. 'ND. Output0 Dna$e H (CCOUNTIN8 Lo! H N'6 *ORF Dna$e H R'S'(RC: Lo! H D(LL(S Dna$e H S(L'S Lo! H C:IC(8O Dna$e H OA'R(TIONS Lo! H )OSTON LIMIT IN )ULF COLL'CT *ou !an use this to li$it the nu$%e of ows to %e fet!hed5 '/0 D'CL(R' T7pe t is ta%le of deptLowt7pe. nt t. Cuso ! is sele!t Efo$ dept. )'8IN Open !. Bet!h ! %ul& !olle!t into nt li$it 1. Close !. Bo i in nt5fist55nt5last loop d%$sMoutput5putMline(=Dna$e H = XX nt(i)5dna$e XX = Lo! H = XX nt(i)5lo!). end loop. 'ND. Output0 Dna$e H (CCOUNTIN8 Lo! H N'6 *ORF Dna$e H R'S'(RC: Lo! H D(LL(S MULTIAL' B'TC:'S IN INTO CL(US' '/20 D'CL(R' T7pe t is ta%le of dept5dna$eLt7pe. nt t. T7pe t2 is ta%le of dept5lo!Lt7pe. Copy rights are reserved. 207 nt2 t. Cuso ! is sele!t dna$e#lo! fo$ dept. )'8IN Open !. Bet!h ! %ul& !olle!t into nt#nt2. Close !. Bo i in nt5fist55nt5last loop d%$sMoutput5putMline(=Dna$e H = XX nt(i)). end loop. Bo i in nt25fist55nt25last loop d%$sMoutput5putMline(=Lo! H = XX nt2(i)). end loop. 'ND. Output0 Dna$e H (CCOUNTIN8 Dna$e H R'S'(RC: Dna$e H S(L'S Dna$e H OA'R(TIONS Lo! H N'6 *ORF Lo! H D(LL(S Lo! H C:IC(8O Lo! H )OSTON '/10 D'CL(R' t7pe t is ta%le of dept5dna$eLt7pe. t7pe t2 is ta%le of dept5lo!Lt7pe. nt t. nt2 t2. )'8IN Sele!t dna$e#lo! %ul& !olle!t into nt#nt2 fo$ dept. fo i in nt5fist55nt5last loop d%$sMoutput5putMline(=Dna$e H = XX nt(i)). end loop. fo i in nt25fist55nt25last loop d%$sMoutput5putMline(=Lo! H = XX nt2(i)). end loop. 'ND. Copy rights are reserved. 208 Output0 Dna$e H (CCOUNTIN8 Dna$e H R'S'(RC: Dna$e H S(L'S Dna$e H OA'R(TIONS Lo! H N'6 *ORF Lo! H D(LL(S Lo! H C:IC(8O Lo! H )OSTON R'TURNIN8 CL(US' IN )ULF COLL'CT *ou !an use this to etun the po!essed data to the ouput vaia%les o t7ped vaia%les5 '/0 D'CL(R' t7pe t is ta%le of nu$%e(1). nt t 0H t(2#1#4#@). t7pe t2 is ta%le of va!ha(1). nt2 t2. t7pe t1 is ta%le of studentLowt7pe. nt1 t1. )'8IN sele!t na$e %ul& !olle!t into nt2 fo$ student. foall v in nt25fist55nt25last update student set no H nt(v) whee na$e H nt2(v) etuning no#na$e#$a&s %ul& !olle!t into nt1. fo v in nt15fist55nt15last loop d%$sMoutput5putMline(=Ma&s H = XX nt1(v)). end loop. 'ND. Output0 Ma&s H 233 Ma&s H 133 Ma&s H 433 Ma&s H @33 AOINTS TO R'M'M)'R Copy rights are reserved. 209 Cuso na$e !an %e up to 43 !haa!tes in length5 Cusos de!laed in anon7$ous %lo!&s o su%poga$s !loses auto$ati!all7 when that %lo!& te$inates e/e!ution5 L%ul&Mow!ount and L%ul&Me/!eptions !an %e used onl7 with foall !onstu!t5 Cuso de!laations $a7 have e/pessions with !olu$n aliases5 These e/pessions ae !alled vitual !olu$ns o !al!ulated !olu$ns5 SQL IN AL?SQL Copy rights are reserved. 210 The onl7 state$ents allowed die!tl7 in pl?sUl ae DML and TCL5 )INDIN8 )inding a vaia%le is the po!ess of identif7ing the stoage lo!ation asso!iated with an identifie in the poga$5 T7pes of %inding 'al7 %inding Late %inding )inding duing the !o$piled phase is eal7 %inding5 )inding duing the unti$e phase is late %inding5 In eal7 %inding !o$pile phase will ta&e longe %e!ause of %inding wo& %ut the e/e!ution is faste5 In late %inding it will shoten the !o$pile phase %ut lengthens the e/e!ution ti$e5 AL?SQL %7 default uses eal7 %inding5 )inding also involves !he!&ing the data%ase fo pe$issions to a!!ess the o%Je!t Refeen!ed5 D*N(MIC SQL If 7ou use DDL in pl?sUl it validates the pe$issions and e/isten!e if eUuies duing !o$pile ti$e whi!h $a&es invalid5 6e !an avoid this %7 using D7na$i! SQL5 D7na$i! SQL allows 7ou to !eate a SQL state$ent d7na$i!all7 at unti$e5 Two te!hniUues ae availa%le fo D7na$i! SQL5 Native D7na$i! SQL D)MSMSQL pa!&age USIN8 N(TI9' D*N(MIC SQL USIN8 '+'CUT' IMM'DI(T' '/0 Copy rights are reserved. 211 )'8IN '/e!ute i$$ediate K!eate ta%le student(no nu$%e(1)#na$e va!ha(23));. o '/e!ute i$$ediate (K!eate ta%le student(no nu$%e(1)#na$e va!ha(23));). 'ND. USIN8 '+'CUT' IMM'DI(T' 6IT: AL?SQL 9(RI()L'S '/0 D'CL(R' v va!ha(233). )'8IN v 0H =!eate ta%le student(no nu$%e(1)#na$e va!ha(23))=. e/e!ute i$$ediate v. 'ND. USIN8 '+'CUT' IMM'DI(T' 6IT: )IND 9(RI()L'S (ND USIN8 CL(US' '/0 D'CL(R' v va!ha(233). )'8IN v 0H =inset into student values(0v2#0v1#0v4)=. e/e!ute i$$ediate v using D#=f=#D33. 'ND. '+'CUTIN8 QU'RI'S 6IT: OA'N BOR (ND USIN8 CL(US' '/0 CR'(T' OR R'AL(C' AROC'DUR' A(s$a&s in nu$%e) IS s va!ha(233) 0H =sele!t Efo$ student whee $a&s - 0$=. t7pe t is ef !uso. ! t. v studentLowt7pe. )'8IN open ! fo s using s$a&s. loop fet!h ! into v. e/it when !Lnotfound. d%$sMoutput5putMline(=Student Ma&s H = XX v5$a&s). end loop. !lose !. Copy rights are reserved. 212 'ND.
Output0 SQL- e/e! p(233) Student Ma&s H 133 Student Ma&s H 433 Student Ma&s H @33 QU'RI'S 6IT: '+'CUT' IMM'DI(T' '/0 D'CL(R' dMna$e dept5dna$eLt7pe. l! dept5lo!Lt7pe. v va!ha(233). )'8IN v 0H =sele!t dna$e fo$ dept whee deptno H 23=. e/e!ute i$$ediate v into dMna$e. d%$sMoutput5putMline(=Dna$e H =XX dMna$e). v 0H =sele!t lo! fo$ dept whee dna$e H 0dn=. e/e!ute i$$ediate v into l! using dMna$e. d%$sMoutput5putMline(=Lo! H = XX l!). 'ND. Output0 Dna$e H (CCOUNTIN8 Lo! H N'6 *ORF 9(RI()L' N(M'S '/0 D'CL(R' Ma&s nu$%e(4) 0H 233. )'8IN Delete student whee $a&s H $a&s. "" this will delete all the ows in the "" student ta%le 'ND. This !an %e avoided %7 using the la%eled %lo!&s5 ,,$7M%lo!&-- Copy rights are reserved. 213 D'CL(R' Ma&s nu$%e(4) 0H 233. )'8IN Delete student whee $a&s H $7M%lo!&5$a&s. "" delete ows whi!h has "" a $a&s of 233 'ND. 8'TTIN8 D(T( INTO AL?SQL 9(RI()L'S '/0 D'CL(R' 92 nu$%e. 91 va!ha(1). )'8IN Sele!t no#na$e into v2#v1 fo$ student whee $a&s H 233. 'ND. DML (ND R'CORDS '/0 CR'(T' OR R'AL(C' AROC'DUR' A(sow in studentLowt7pe) IS )'8IN inset into student values sow. 'ND A. D'CL(R' s studentLowt7pe. )'8IN s5no 0H 22. s5na$e 0H =aa=. s5$a&s 0H 233. p(s). 'ND. R'CORD )(S'D INS'RTS '/0 D'CL(R' sow studentLowt7pe. )'8IN sow5no 0H V. sow5na$e 0H =!!=. sow5$a&s 0H C33. Copy rights are reserved. 214 inset into student values sow. 'ND. R'CORD )(S'D UAD(T'S '/0 D'CL(R' sow studentLowt7pe. )'8IN sow5no 0H D. sow5na$e 0H =!!=. sow5$a&s 0H C33. update student set owHsow whee no H sow5no. 'ND. USIN8 R'CORDS 6IT: R'TURNIN8 CL(US' '/0 D'CL(R' sow studentLowt7pe. setun studentLowt7pe. )'8IN sow5no 0H W. sow5na$e 0H =dd=. sow5$a&s 0H C33. inset into student values sow etuning no#na$e#$a&s into setun. d%$sMoutput5putMline(=No H = XX setun5no). d%$sMoutput5putMline(=No H = XX setun5na$e). d%$sMoutput5putMline(=No H = XX setun5$a&s). 'ND. Output0 No H W No H dd No H C33 USIN8 D)MSMSQL A(CF(8' D)MSMSQL is used to e/e!ute d7na$i! SQL fo$ with in AL?SQL5 Unli&e native d7na$i! SQL# it is not %uilt die!tl7 into the language# and thus is less effi!ient5 The D)MSMSQL pa!&age allows 7ou to die!tl7 !ontol the po!essing of a state$ent within a !uso# with Copy rights are reserved. 215 opeations su!h as opening and !losing a !uso# pasing a state$ent# %inding input vaia%le# and defining output vaia%les5 '/20 D'CL(R' !usoMid nu$%e. flag nu$%e. vMst$t va!ha(C3). )'8IN !usoMid 0H d%$sMsUl5openM!uso. vMst$t 0H =!eate ta%le stud(sno nu$%e(1)#sna$e va!ha(23))=. d%$sMsUl5pase(!usoMid#vMst$t#d%$sMsUl5native). flag 0H d%$sMsUl5e/e!ute(!usoMid). d%$sMsUl5!loseM!uso(!usoMid). d%$sMoutput5putMline(=Ta%le !eated=). 'ND. Output0 Ta%le !eated SQL- des! stud Na$e Null[ T7pe """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""" """""""" SNO NUM)'R(1) SN(M' 9(RC:(R1(23) '/10 CR'(T' OR R'AL(C' AROC'DUR' D)MSMSQLMAROC(v2 student5noLt7pe# v1 student5$a&sLt7pe) is !usoMid nu$%e. flag nu$%e. vMupdate va!ha(C3). )'8IN !usoMid 0H d%$sMsUl5openM!uso. vMupdate 0H =update student set $a&s H 0s$a&s whee no H 0sno=. d%$sMsUl5pase(!usoMid#vMupdate#d%$sMsUl5native). d%$sMsUl5%indMvaia%le(!usoMid#=0sno=#v2). Copy rights are reserved. 216 d%$sMsUl5%indMvaia%le(!usoMid#=0s$a&s=#v1). flag 0H d%$sMsUl5e/e!ute(!usoMid). d%$sMsUl5!loseM!uso(!usoMid). 'ND D)MSMSQLMAROC. Output0 SQL- sele!t E fo$ student. "" %efoe e/e!ution NO N( M(RFS """" """""" "" """""""""" 2 a 233 1 % 133 4 ! 433 SQL- e/e! d%$sMsUlMpo!(1#111) SQL- sele!t E fo$ student. "" afte e/e!ution NO N( M(RFS """" """""" "" """""""""" 2 a 233 1 % 111 4 ! 433 BOR(LL ST(T'M'NT This !an %e used to get the data fo$ the data%ase at on!e %7 edu!ting the nu$%e of !onte/t swit!hes whi!h is a tansfe of !ontol %etween AL?SQL and SQL engine5 S7nta/0 Boall inde/Mva in N 4ower_bound55upper_bound X Indi!es of inde(in"_collection X 9alues of inde(in"_collection O SQL state$ent. BOR(LL 6IT: NON"S'QU'NTI(L (RR(*S '/0 Copy rights are reserved. 217 D'CL(R' t7pe t is ta%le of student5noLt7pe inde/ %7 %ina7Mintege. i%t t. )'8IN i%t(2) 0H 2. i%t(23) 0H 1. foall i in i%t5fist55i%t5last update student set $a&s H S33 whee no H i%t(i). 'ND. The a%ove poga$ will give eo li&e Kele$ent at inde/ N1O does not e/ists5 *ou !an e!tif7 it in one of the two following wa7s5 US8(8' OB INDIC'S OB TO (9OID T:' ()O9' )':(9IOUR This will %e used when 7ou have a !olle!tion whose defined ows spe!if7 whi!h ows in the %inding aa7 7ou would li&e to po!essed5 '/0 D'CL(R' t7pe t is ta%le of student5noLt7pe inde/ %7 %ina7Mintege. i%t t. t7pe t2 is ta%le of %oolean inde/ %7 %ina7Mintege. i%t2 t2. )'8IN i%t(2) 0H 2. i%t(23) 0H 1. i%t(233) 0H 4. i%t2(2) 0H tue. i%t2(23) 0H tue. i%t2(233) 0H tue. foall i in indi!es of i%t2 update student set $a&s H S33 whee no H i%t(i). 'ND. Ouput0 SQL- sele!t E fo$ student "" %efoe e/e!ution NO N( M(RFS """""""""" """""""""""" 2 a 233 Copy rights are reserved. 218 1 % 133 4 ! 433 SQL- sele!t E fo$ student "" afte e/e!ution NO N( M(RFS """""""""" """""""""""" 2 a S33 1 % S33 4 ! S33 US8(8' OB 9(LU'S OB TO (9OID T:' ()O9' )':(9IOUR This will %e used when 7ou have a !olle!tion of integes whose !ontent identifies the position in the %inding aa7 that 7ou want to %e po!essed %7 the BOR(LL state$ent5 '/0 D'CL(R' t7pe t is ta%le of student5noLt7pe inde/ %7 %ina7Mintege. i%t t. t7pe t2 is ta%le of plsMintege inde/ %7 %ina7Mintege. i%t2 t2. )'8IN i%t(2) 0H 2. i%t(23) 0H 1. i%t(233) 0H 4. i%t2(22) 0H 2. i%t2(2C) 0H 23. i%t2(2W) 0H 233. foall i in values of i%t2 update student set $a&s H CDV whee no H i%t(i). 'ND. Ouput0 SQL- sele!t E fo$ student "" %efoe e/e!ution NO N( M(RFS """""""""" """""""""""" 2 a 233 1 % 133 4 ! 433 Copy rights are reserved. 219 SQL- sele!t E fo$ student "" afte e/e!ution NO N( M(RFS """""""""" """""""""""" 2 a S33 1 % S33 4 ! S33
AOINTS ()OUT )ULF )INDS Aassing the entie AL?SQL ta%le to the SQL engine in one step is &nown as %ul& %ind5 )ul& %inds ae done using the foall state$ent5 If thee is an eo po!essing one of the ows in %ul& DML opeation# onl7 that ow is olled %a!&5 AOINTS ()OUT R'TURIN8 CL(US' This will %e used onl7 with DML state$ents to etun data into AL?SQL vaia%les5 This will %e useful in situations li&e # when pefo$ing inset o update o delete if 7ou want to &now the data of the ta%le whi!h has %een effe!ted %7 the DML5 6ith out going fo anothe S'L'CT using R'TURNIN8 !lause we will get the data whi!h will avoid a !all to RD)MS &enel5 COLL'CTIONS Colle!tions ae also !o$posite t7pes# in that the7 allow 7ou to teat seveal vaia%les as a unit5 ( !olle!tion !o$%ines vaia%les of the sa$e t7pe5 T*A'S Copy rights are reserved. 220 9aa7s Nested ta%les Inde/ " %7 ta%les ((sso!iate aa7s) 9(RR(*S ( vaa7 is datat7pe ve7 si$ila to an aa75 ( vaa7 has a fi/ed li$it on its siTe# spe!ified as pat of the de!laation5 'le$ents ae inseted into vaa7 stating at inde/ 2# up to $a/i$u$ lenth de!laed in the vaa7 t7pe5 The $a/i$u$ siTe of the vaa7 is 1 giga %7tes5 S7nta/0 T7pe ,type_name& is vaa7 X va7ing aa7 (,limit&) of ,element_type&. '/20 D'CL(R' t7pe t is vaa7(23) of va!ha(1). va t 0H t(=a=#=%=#=!=#=d=). flag %oolean. )'8IN d%$sMoutput5putMline(=Li$it H = XX va5li$it). d%$sMoutput5putMline(=Count H = XX va5!ount). d%$sMoutput5putMline(=Bist Inde/ H = XX va5fist). d%$sMoutput5putMline(=Last Inde/ H = XX va5last). d%$sMoutput5putMline(=Ne/t Inde/ H = XX va5ne/t(1)). d%$sMoutput5putMline(=Aevious Inde/ H = XX va5pio(4)). d%$sMoutput5putMline(=9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sMoutput5putMline(=vaN= XX i XX =O H = XX va(i)). end loop. flag 0H va5e/ists(4). if flag H tue then d%$sMoutput5putMline(=Inde/ 4 e/ists with an ele$ent = XX va(4)). else d%$sMoutput5putMline(=Inde/ 4 does not e/ists=). end if. va5e/tend. d%$sMoutput5putMline(=(fte e/tend of one inde/# Count H = XX va5!ount). flag 0H va5e/ists(C). if flag H tue then d%$sMoutput5putMline(=Inde/ C e/ists with an ele$ent = XX va(C)). Copy rights are reserved. 221 else d%$sMoutput5putMline(=Inde/ C does not e/ists=). end if. flag 0H va5e/ists(D). if flag H tue then d%$sMoutput5putMline(=Inde/ D e/ists with an ele$ent = XX va(D)). else d%$sMoutput5putMline(=Inde/ D does not e/ists=). end if. va5e/tend(1). d%$sMoutput5putMline(=(fte e/tend of two inde/es# Count H = XX va5!ount). d%$sMoutput5putMline(=9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sMoutput5putMline(=vaN= XX i XX =O H = XX va(i)). end loop. va(C) 0H =e=. va(D) 0H =f=. va(V) 0H =g=. d%$sMoutput5putMline(=(BT'R (SSIN8NIN8 9(LU'S TO '+T'ND'D 'L'M'NTS# 9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sMoutput5putMline(=vaN= XX i XX =O H = XX va(i)). end loop. va5e/tend(4#1). d%$sMoutput5putMline(=(fte e/tend of thee inde/es# Count H = XX va5!ount). d%$sMoutput5putMline(=9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sMoutput5putMline(=vaN= XX i XX =O H = XX va(i)). end loop. va5ti$. d%$sMoutput5putMline(=(fte ti$ of one inde/# Count H = XX va5!ount). va5ti$(4). d%$sMoutput5putMline(=(fte ti$ of thee inde/s# Count H = XX va5!ount). d%$sMoutput5putMline(=(BT'R TRIM# 9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sMoutput5putMline(=vaN= XX i XX =O H = XX va(i)). end loop. va5delete. d%$sMoutput5putMline(=(fte delete of entie vaa7# Count H = XX va5!ount). 'ND. Copy rights are reserved. 222 Output0 Li$it H 23 Count H @ Bist Inde/ H 2 Last Inde/ H @ Ne/t Inde/ H 4 Aevious Inde/ H 1 9(RR(* 'L'M'NTS vaN2O H a vaN1O H % vaN4O H ! vaN@O H d Inde/ 4 e/ists with an ele$ent ! (fte e/tend of one inde/# Count H C Inde/ C e/ists with an ele$ent Inde/ D does not e/ists (fte e/tend of two inde/es# Count H V 9(RR(* 'L'M'NTS vaN2O H a vaN1O H % vaN4O H ! vaN@O H d vaNCO H vaNDO H vaNVO H (BT'R (SSIN8NIN8 9(LU'S TO '+T'ND'D 'L'M'NTS# 9(RR(* 'L'M'NTS vaN2O H a vaN1O H % vaN4O H ! vaN@O H d vaNCO H e vaNDO H f vaNVO H g (fte e/tend of thee inde/es# Count H 23 9(RR(* 'L'M'NTS vaN2O H a vaN1O H % vaN4O H ! Copy rights are reserved. 223 vaN@O H d vaNCO H e vaNDO H f vaNVO H g vaNWO H % vaNSO H % vaN23O H % (fte ti$ of one inde/# Count H S (fte ti$ of thee inde/s# Count H D (BT'R TRIM# 9(RR(* 'L'M'NTS vaN2O H a vaN1O H % vaN4O H ! vaN@O H d vaNCO H e vaNDO H f (fte delete of entie vaa7# Count H 3 '/10 D'CL(R' t7pe t is vaa7(@) of studentLowt7pe. va t 0H t(null#null#null#null). )'8IN fo i in 255va5!ount loop sele!t E into va(i) fo$ student whee sno H i. d%$sMoutput5putMline(=Sno H = XX va(i)5sno XX = Sna$e H = XX va(i)5sna$e). end loop. 'ND. Output0 Sno H 2 Sna$e H sað Sno H 1 Sna$e H sinu Sno H 4 Sna$e H div7a Sno H @ Sna$e H $anogni '/40 D'CL(R' t7pe t is vaa7(@) of student5s$a&sLt7pe. va t 0H t(null#null#null#null). )'8IN Copy rights are reserved. 224 fo i in 255va5!ount loop sele!t s$a&s into va(i) fo$ student whee sno H i. d%$sMoutput5putMline(=S$a&s H = XX va(i)). end loop. 'ND. Output0 S$a&s H 233 S$a&s H 133 S$a&s H 433 S$a&s H @33 '/@0 D'CL(R' t7pe is e!od(!2 student5sna$eLt7pe#!1 student5s$a&sLt7pe). t7pe t is vaa7(@) of . va t 0H t(null#null#null#null). )'8IN fo i in 255va5!ount loop sele!t sna$e#s$a&s into va(i) fo$ student whee sno H i. d%$sMoutput5putMline(=Sna$e H = XX va(i)5!2 XX = S$a&s H = XX va(i)5!1). end loop. 'ND. Output0 Sna$e H sað S$a&s H 233 Sna$e H sinu S$a&s H 133 Sna$e H div7a S$a&s H 433 Sna$e H $anogni S$a&s H @33 '/C0 D'CL(R' t7pe t is vaa7(2) of add. va t 0H t(null). !uso ! is sele!t E fo$ e$plo7. i nu$%e 0H 2. )'8IN fo v in ! loop sele!t addess into va(i) fo$ e$plo7 whee ena$e H v5ena$e. d%$sMoutput5putMline(=:no H = XX va(i)5hno XX = Cit7 H = XX va(i)5!it7). end loop. Copy rights are reserved. 225 'ND. Output0 :no H 22 Cit7 H h7d :no H 11 Cit7 H %ang :no H 44 Cit7 H &o!hi '/D0 D'CL(R' t7pe t is vaa7(C) of va!ha(1). va2 t. va1 t 0H t(). )'8IN if va2 is null then d%$sMoutput5putMline(=va2 is null=). else d%$sMoutput5putMline(=va2 is not null=). end if. if va1 is null then d%$sMoutput5putMline(=va1 is null=). else d%$sMoutput5putMline(=va1 is not null=). end if. 'ND. Output0 va2 is null va1 is not null N'ST'D T()L'S ( nested ta%le is thought of a data%ase ta%le whi!h has no li$it on its siTe5 'le$ents ae inseted into nested ta%le stating at inde/ 25 The $a/i$u$ siTe of the vaa7 is 1 giga %7tes5 S7nta/0 T7pe ,type_name& is ta%le of ,table_type&. Copy rights are reserved. 226 '/20 D'CL(R' t7pe t is ta%le of va!ha(1). nt t 0H t(=a=#=%=#=!=#=d=). flag %oolean. )'8IN if nt5li$it is null then d%$sMoutput5putMline(=No li$it to Nested Ta%les=). else d%$sMoutput5putMline(=Li$it H = XX nt5li$it). end if. d%$sMoutput5putMline(=Count H = XX nt5!ount). d%$sMoutput5putMline(=Bist Inde/ H = XX nt5fist). d%$sMoutput5putMline(=Last Inde/ H = XX nt5last). d%$sMoutput5putMline(=Ne/t Inde/ H = XX nt5ne/t(1)). d%$sMoutput5putMline(=Aevious Inde/ H = XX nt5pio(4)). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =O H = XX nt(i)). end loop. flag 0H nt5e/ists(4). if flag H tue then d%$sMoutput5putMline(=Inde/ 4 e/ists with an ele$ent = XX nt(4)). else d%$sMoutput5putMline(=Inde/ 4 does not e/ists=). end if. nt5e/tend. d%$sMoutput5putMline(=(fte e/tend of one inde/# Count H = XX nt5!ount). flag 0H nt5e/ists(C). if flag H tue then d%$sMoutput5putMline(=Inde/ C e/ists with an ele$ent = XX nt(C)). else d%$sMoutput5putMline(=Inde/ C does not e/ists=). end if. flag 0H nt5e/ists(D). if flag H tue then d%$sMoutput5putMline(=Inde/ D e/ists with an ele$ent = XX nt(D)). else d%$sMoutput5putMline(=Inde/ D does not e/ists=). end if. Copy rights are reserved. 227 nt5e/tend(1). d%$sMoutput5putMline(=(fte e/tend of two inde/es# Count H = XX nt5!ount). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =O H = XX nt(i)). end loop. nt(C) 0H =e=. nt(D) 0H =f=. nt(V) 0H =g=. d%$sMoutput5putMline(=(BT'R (SSIN8NIN8 9(LU'S TO '+T'ND'D 'L'M'NTS# N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =O H = XX nt(i)). end loop. nt5e/tend(C#1). d%$sMoutput5putMline(=(fte e/tend of five inde/es# Count H = XX nt5!ount). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =O H = XX nt(i)). end loop. nt5ti$. d%$sMoutput5putMline(=(fte ti$ of one inde/# Count H = XX nt5!ount). nt5ti$(4). d%$sMoutput5putMline(=(fte ti$ of thee inde/s# Count H = XX nt5!ount). d%$sMoutput5putMline(=(BT'R TRIM# N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =O H = XX nt(i)). end loop. nt5delete(2). d%$sMoutput5putMline(=(fte delete of fist inde/# Count H = XX nt5!ount). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 155nt5!ountG2 loop d%$sMoutput5putMline(=ntN= XX i XX =O H = XX nt(i)). end loop. nt5delete(@). d%$sMoutput5putMline(=(fte delete of fouth inde/# Count H = XX nt5!ount). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 1554 loop d%$sMoutput5putMline(=ntN= XX i XX =O H = XX nt(i)). end loop. Copy rights are reserved. 228 fo i in C55nt5!ountG1 loop d%$sMoutput5putMline(=ntN= XX i XX =O H = XX nt(i)). end loop. nt5delete. d%$sMoutput5putMline(=(fte delete of entie nested ta%le# Count H = XX nt5!ount). 'ND. Output0 No li$it to Nested Ta%les Count H @ Bist Inde/ H 2 Last Inde/ H @ Ne/t Inde/ H 4 Aevious Inde/ H 1 N'ST'D T()L' 'L'M'NTS ntN2O H a ntN1O H % ntN4O H ! ntN@O H d Inde/ 4 e/ists with an ele$ent ! (fte e/tend of one inde/# Count H C Inde/ C e/ists with an ele$ent Inde/ D does not e/ists (fte e/tend of two inde/es# Count H V N'ST'D T()L' 'L'M'NTS ntN2O H a ntN1O H % ntN4O H ! ntN@O H d ntNCO H ntNDO H ntNVO H (BT'R (SSIN8NIN8 9(LU'S TO '+T'ND'D 'L'M'NTS# N'ST'D T()L' 'L'M'NTS ntN2O H a ntN1O H % ntN4O H ! ntN@O H d ntNCO H e Copy rights are reserved. 229 ntNDO H f ntNVO H g (fte e/tend of five inde/es# Count H 21 N'ST'D T()L' 'L'M'NTS ntN2O H a ntN1O H % ntN4O H ! ntN@O H d ntNCO H e ntNDO H f ntNVO H g ntNWO H % ntNSO H % ntN23O H % ntN22O H % ntN21O H % (fte ti$ of one inde/# Count H 22 (fte ti$ of thee inde/s# Count H W (BT'R TRIM# N'ST'D T()L' 'L'M'NTS ntN2O H a ntN1O H % ntN4O H ! ntN@O H d ntNCO H e ntNDO H f ntNVO H g ntNWO H % (fte delete of fist inde/# Count H V N'ST'D T()L' 'L'M'NTS ntN1O H % ntN4O H ! ntN@O H d ntNCO H e ntNDO H f ntNVO H g ntNWO H % (fte delete of fouth inde/# Count H D N'ST'D T()L' 'L'M'NTS ntN1O H % Copy rights are reserved. 230 ntN4O H ! ntNCO H e ntNDO H f ntNVO H g ntNWO H % (fte delete of entie nested ta%le# Count H 3 '/10 D'CL(R' t7pe t is ta%le of studentLowt7pe. nt t 0H t(null#null#null#null). )'8IN fo i in 255nt5!ount loop sele!t E into nt(i) fo$ student whee sno H i. d%$sMoutput5putMline(=Sno H = XX nt(i)5sno XX = Sna$e H = XX nt(i)5sna$e). end loop. 'ND. Output0 Sno H 2 Sna$e H sað Sno H 1 Sna$e H sinu Sno H 4 Sna$e H div7a Sno H @ Sna$e H $anogni '/40 D'CL(R' t7pe t is ta%le of student5s$a&sLt7pe. nt t 0H t(null#null#null#null). )'8IN fo i in 255nt5!ount loop sele!t s$a&s into nt(i) fo$ student whee sno H i. d%$sMoutput5putMline(=S$a&s H = XX nt(i)). end loop. 'ND. Output0 S$a&s H 233 S$a&s H 133 S$a&s H 433 S$a&s H @33 Copy rights are reserved. 231 '/@0 D'CL(R' t7pe is e!od(!2 student5sna$eLt7pe#!1 student5s$a&sLt7pe). t7pe t is ta%le of . nt t 0H t(null#null#null#null). )'8IN fo i in 255nt5!ount loop sele!t sna$e#s$a&s into nt(i) fo$ student whee sno H i. d%$sMoutput5putMline(=Sna$e H = XX nt(i)5!2 XX = S$a&s H = XX nt(i)5!1). end loop. 'ND. Output0 Sna$e H sað S$a&s H 233 Sna$e H sinu S$a&s H 133 Sna$e H div7a S$a&s H 433 Sna$e H $anogni S$a&s H @33 '/C0 D'CL(R' t7pe t is ta%le of add. nt t 0H t(null). !uso ! is sele!t E fo$ e$plo7. i nu$%e 0H 2. )'8IN fo v in ! loop sele!t addess into nt(i) fo$ e$plo7 whee ena$e H v5ena$e. d%$sMoutput5putMline(=:no H = XX nt(i)5hno XX = Cit7 H = XX nt(i)5!it7). end loop. 'ND. Output0 :no H 22 Cit7 H h7d :no H 11 Cit7 H %ang :no H 44 Cit7 H &o!hi '/D0 D'CL(R' t7pe t is vaa7(C) of va!ha(1). Copy rights are reserved. 232 nt2 t. nt1 t 0H t(). )'8IN if nt2 is null then d%$sMoutput5putMline(=nt2 is null=). else d%$sMoutput5putMline(=nt2 is not null=). end if. if nt1 is null then d%$sMoutput5putMline(=nt1 is null=). else d%$sMoutput5putMline(=nt1 is not null=). end if. 'ND. Output0 nt2 is null nt1 is not null S'T OA'R(TIONS IN N'ST'D T()L'S *ou !an pefo$ set opeations in the nested ta%les5 *ou !an also pefo$ eUualit7 !o$paisions %etween nested ta%les5 Aossi%le opeations ae UNION UNION DISTINCT INT'RS'CT '+C'AT ( a!t li&e MINUS) '/0 D'CL(R' t7pe t is ta%le of va!ha(1). nt2 t 0H t(=a=#=%=#=!=). nt1 t 0H t(=!=#=%=#=a=). nt4 t 0H t(=%=#=!=#=a=#=!=). nt@ t 0H t(=a=#=%=#=d=). ntC t. )'8IN Copy rights are reserved. 233 ntC 0H set(nt2). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in ntC5fist55ntC5last loop d%$sMoutput5putMline(=ntCN = XX i XX = O H = XX ntC(i)). end loop. ntC 0H set(nt4). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in ntC5fist55ntC5last loop d%$sMoutput5putMline(=ntCN = XX i XX = O H = XX ntC(i)). end loop. ntC 0H nt2 $ultiset union nt@. d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in ntC5fist55ntC5last loop d%$sMoutput5putMline(=ntCN = XX i XX = O H = XX ntC(i)). end loop. ntC 0H nt2 $ultiset union nt4. d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in ntC5fist55ntC5last loop d%$sMoutput5putMline(=ntCN = XX i XX = O H = XX ntC(i)). end loop. ntC 0H nt2 $ultiset union distin!t nt4. d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in ntC5fist55ntC5last loop d%$sMoutput5putMline(=ntCN = XX i XX = O H = XX ntC(i)). end loop. ntC 0H nt2 $ultiset e/!ept nt@. d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in ntC5fist55ntC5last loop d%$sMoutput5putMline(=ntCN = XX i XX = O H = XX ntC(i)). end loop. ntC 0H nt@ $ultiset e/!ept nt2. d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in ntC5fist55ntC5last loop d%$sMoutput5putMline(=ntCN = XX i XX = O H = XX ntC(i)). end loop. 'ND. Output0 N'ST'D T()L' 'L'M'NTS Copy rights are reserved. 234 ntCN 2 O H a ntCN 1 O H % ntCN 4 O H ! N'ST'D T()L' 'L'M'NTS ntCN 2 O H % ntCN 1 O H ! ntCN 4 O H a N'ST'D T()L' 'L'M'NTS ntCN 2 O H a ntCN 1 O H % ntCN 4 O H ! ntCN @ O H a ntCN C O H % ntCN D O H d N'ST'D T()L' 'L'M'NTS ntCN 2 O H a ntCN 1 O H % ntCN 4 O H ! ntCN @ O H % ntCN C O H ! ntCN D O H a ntCN V O H ! N'ST'D T()L' 'L'M'NTS ntCN 2 O H a ntCN 1 O H % ntCN 4 O H ! N'ST'D T()L' 'L'M'NTS ntCN 2 O H ! N'ST'D T()L' 'L'M'NTS ntCN 2 O H d IND'+")* T()L'S (n inde/"%7 ta%le has no li$it on its siTe5 'le$ents ae inseted into inde/"%7 ta%le whose inde/ $a7 stat non"seUuentiall7 in!luding negative integes5 S7nta/0 T7pe ,type_name& is ta%le of ,table_type& inde/ %7 %ina7Mintege. Copy rights are reserved. 235 '/0 D'CL(R' t7pe t is ta%le of va!ha(1) inde/ %7 %ina7Mintege. i%t t. flag %oolean. )'8IN i%t(2) 0H =a=. i%t("13) 0H =%=. i%t(43) 0H =!=. i%t(233) 0H =d=. if i%t5li$it is null then d%$sMoutput5putMline(=No li$it to Inde/ %7 Ta%les=). else d%$sMoutput5putMline(=Li$it H = XX i%t5li$it). end if. d%$sMoutput5putMline(=Count H = XX i%t5!ount). d%$sMoutput5putMline(=Bist Inde/ H = XX i%t5fist). d%$sMoutput5putMline(=Last Inde/ H = XX i%t5last). d%$sMoutput5putMline(=Ne/t Inde/ H = XX i%t5ne/t(1)). d%$sMoutput5putMline(=Aevious Inde/ H = XX i%t5pio(4)). d%$sMoutput5putMline(=IND'+ )* T()L' 'L'M'NTS=). d%$sMoutput5putMline(=i%tN"13O H = XX i%t("13)). d%$sMoutput5putMline(=i%tN2O H = XX i%t(2)). d%$sMoutput5putMline(=i%tN43O H = XX i%t(43)). d%$sMoutput5putMline(=i%tN233O H = XX i%t(233)). flag 0H i%t5e/ists(43). if flag H tue then d%$sMoutput5putMline(=Inde/ 43 e/ists with an ele$ent = XX i%t(43)). else d%$sMoutput5putMline(=Inde/ 43 does not e/ists=). end if. flag 0H i%t5e/ists(C3). if flag H tue then d%$sMoutput5putMline(=Inde/ C3 e/ists with an ele$ent = XX i%t(43)). else d%$sMoutput5putMline(=Inde/ C3 does not e/ists=). end if. i%t5delete(2). d%$sMoutput5putMline(=(fte delete of fist inde/# Count H = XX i%t5!ount). i%t5delete(43). Copy rights are reserved. 236 d%$sMoutput5putMline(=(fte delete of inde/ thit7# Count H = XX i%t5!ount). d%$sMoutput5putMline(=IND'+ )* T()L' 'L'M'NTS=). d%$sMoutput5putMline(=i%tN"13O H = XX i%t("13)). d%$sMoutput5putMline(=i%tN233O H = XX i%t(233)). i%t5delete. d%$sMoutput5putMline(=(fte delete of entie inde/"%7 ta%le# Count H = XX i%t5!ount). 'ND. Output0 No li$it to Inde/ %7 Ta%les Count H @ Bist Inde/ H "13 Last Inde/ H 233 Ne/t Inde/ H 43 Aevious Inde/ H 2 IND'+ )* T()L' 'L'M'NTS i%tN"13O H % i%tN2O H a i%tN43O H ! i%tN233O H d Inde/ 43 e/ists with an ele$ent ! Inde/ C3 does not e/ists (fte delete of fist inde/# Count H 4 (fte delete of inde/ thit7# Count H 1 IND'+ )* T()L' 'L'M'NTS i%tN"13O H % i%tN233O H d (fte delete of entie inde/"%7 ta%le# Count H 3 DIBB'R'NC'S (MON8 COLL'CTIONS 9aa7s has li$it# nested ta%les and inde/"%7 ta%les has no li$it5 9aa7s and nested ta%les $ust %e initialiTed %efoe assign$ent of ele$ents# in inde/"%7 ta%les we !an die!tl7 assign ele$ents5 9aa7s and nested ta%les stoed in data%ase# %ut inde/"%7 ta%les !an not5 Nested ta%les and inde/"%7 ta%les ae AL?SQL ta%les# %ut vaa7s !an not5 Copy rights are reserved. 237 Fe7s $ust %e positive in !ase of nested ta%les and vaa7s# in !ase of inde/"%7 ta%les &e7s !an %e positive o negative5 Refeen!ing none/istent ele$ents aises SU)SCRIATM)'*ONDMCOUNT in %oth nested ta%les and vaa7s# %ut in !ase of inde/"%7 ta%les NOMD(T(MBOUND aises5 Fe7s ae seUuential in %oth nested ta%les and vaa7s# non"seUuential in inde/"%7 ta%les5 Individual inde/es !an %e deleted in %oth nested ta%les and inde/"%7 ta%les# %ut in vaa7s !an not5 Individual inde/es !an %e ti$$ed in %oth nested ta%les and vaa7s# %ut in inde/"%7 ta%les !an not5 Individual inde/es !an %e e/tended in %oth nested ta%les and vaa7s# %ut in inde/"%7 ta%les !an not5 MULTIL'9'L COLL'CTIONS Colle!tions of $oe than one di$ension whi!h is a !olle!tion of !olle!tions# &nown as $ultilevel !olle!tions5 S7nta/0 T7pe ,type_name1& is ta%le of ,table_type& inde/ %7 %ina7Mintege. T7pe ,type_name2& is vaa7(,limit-) X ta%le X of ,type_name1& < inde/ %7 %ina7Mintege. '/20 D'CL(R' t7pe t2 is ta%le of va!ha(1) inde/ %7 %ina7Mintege. t7pe t1 is vaa7(C) of t2. va t1 0H t1(). ! nu$%e 0H SV. flag %oolean. )'8IN va5e/tend(@). d%$sMoutput5putMline(=Count H = XX va5!ount). d%$sMoutput5putMline(=Li$it H = XX va5li$it). fo i in 255va5!ount loop fo J in 255va5!ount loop va(i)(J) 0H !h(!). ! 0H ! G 2. end loop. end loop. Copy rights are reserved. 238 d%$sMoutput5putMline(=9(RR(* 'L'M'NTS=). fo i in 255va5!ount loop fo J in 255va5!ount loop d%$sMoutput5putMline(=vaN= XX i XX =ON= XX J XX =O H = XX va(i)(J)). end loop. end loop. d%$sMoutput5putMline(=Bist inde/ H = XX va5fist). d%$sMoutput5putMline(=Last inde/ H = XX va5last). d%$sMoutput5putMline(=Ne/t inde/ H = XX va5ne/t(1)). d%$sMoutput5putMline(=Aevious inde/ H = XX va5pio(4)). flag 0H va5e/ists(1). if flag H tue then d%$sMoutput5putMline(=Inde/ 1 e/ists=). else d%$sMoutput5putMline(=Inde/ 1 e/ists=). end if. va5e/tend. va(2)(C) 0H =U=. va(1)(C) 0H ==. va(4)(C) 0H =s=. va(@)(C) 0H =t=. va(C)(2) 0H =u=. va(C)(1) 0H =v=. va(C)(4) 0H =w=. va(C)(@) 0H =/=. va(C)(C) 0H =7=. d%$sMoutput5putMline(=(fte e/tend of one inde/# Count H = XX va5!ount). d%$sMoutput5putMline(=9(RR(* 'L'M'NTS=). fo i in 255va5!ount loop fo J in 255va5!ount loop d%$sMoutput5putMline(=vaN= XX i XX =ON= XX J XX =O H = XX va(i)(J)). end loop. end loop. va5ti$. d%$sMoutput5putMline(=(fte ti$ of one inde/# Count H = XX va5!ount). va5ti$(1). d%$sMoutput5putMline(=(fte ti$ of two inde/es# Count H = XX va5!ount). d%$sMoutput5putMline(=9(RR(* 'L'M'NTS=). fo i in 255va5!ount loop Copy rights are reserved. 239 fo J in 255va5!ount loop d%$sMoutput5putMline(=vaN= XX i XX =ON= XX J XX =O H = XX va(i)(J)). end loop. end loop. va5delete. d%$sMoutput5putMline(=(fte delete of entie vaa7# Count H = XX va5!ount). 'ND. Output0 Count H @ Li$it H C 9(RR(* 'L'M'NTS vaN2ON2O H a vaN2ON1O H % vaN2ON4O H ! vaN2ON@O H d vaN1ON2O H e vaN1ON1O H f vaN1ON4O H g vaN1ON@O H h vaN4ON2O H i vaN4ON1O H J vaN4ON4O H & vaN4ON@O H l vaN@ON2O H $ vaN@ON1O H n vaN@ON4O H o vaN@ON@O H p Bist inde/ H 2 Last inde/ H @ Ne/t inde/ H 4 Aevious inde/ H 1 Inde/ 1 e/ists (fte e/tend of one inde/# Count H C 9(RR(* 'L'M'NTS vaN2ON2O H a vaN2ON1O H % vaN2ON4O H ! vaN2ON@O H d Copy rights are reserved. 240 vaN2ONCO H U vaN1ON2O H e vaN1ON1O H f vaN1ON4O H g vaN1ON@O H h vaN1ONCO H vaN4ON2O H i vaN4ON1O H J vaN4ON4O H & vaN4ON@O H l vaN4ONCO H s vaN@ON2O H $ vaN@ON1O H n vaN@ON4O H o vaN@ON@O H p vaN@ONCO H t vaNCON2O H u vaNCON1O H v vaNCON4O H w vaNCON@O H / vaNCONCO H 7 (fte ti$ of one inde/# Count H @ (fte ti$ of two inde/es# Count H 1 9(RR(* 'L'M'NTS vaN2ON2O H a vaN2ON1O H % vaN1ON2O H e vaN1ON1O H f (fte delete of entie vaa7# Count H 3 '/10 D'CL(R' t7pe t2 is ta%le of va!ha(1) inde/ %7 %ina7Mintege. t7pe t1 is ta%le of t2. nt t1 0H t1(). ! nu$%e 0H DC. v nu$%e 0H 2. flag %oolean. )'8IN nt5e/tend(@). Copy rights are reserved. 241 d%$sMoutput5putMline(=Count H = XX nt5!ount). if nt5li$it is null then d%$sMoutput5putMline(=No li$it to Nested Ta%les=). else d%$sMoutput5putMline(=Li$it H = XX nt5li$it). end if. fo i in 255nt5!ount loop fo J in 255nt5!ount loop nt(i)(J) 0H !h(!). ! 0H ! G 2. if ! H S2 then ! 0H SV. end if. end loop. end loop. d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop fo J in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =ON= XX J XX =O H = XX nt(i)(J)). end loop. end loop. d%$sMoutput5putMline(=Bist inde/ H = XX nt5fist). d%$sMoutput5putMline(=Last inde/ H = XX nt5last). d%$sMoutput5putMline(=Ne/t inde/ H = XX nt5ne/t(1)). d%$sMoutput5putMline(=Aevious inde/ H = XX nt5pio(4)). flag 0H nt5e/ists(1). if flag H tue then d%$sMoutput5putMline(=Inde/ 1 e/ists=). else d%$sMoutput5putMline(=Inde/ 1 e/ists=). end if. nt5e/tend(1). nt(2)(C) 0H =Q=. nt(2)(D) 0H =R=. nt(1)(C) 0H =S=. nt(1)(D) 0H =T=. nt(4)(C) 0H =U=. nt(4)(D) 0H =9=. nt(@)(C) 0H =6=. Copy rights are reserved. 242 nt(@)(D) 0H =+=. nt(C)(2) 0H =*=. nt(C)(1) 0H =Z=. nt(C)(4) 0H =a=. nt(C)(@) 0H =%=. nt(C)(C) 0H =!=. nt(C)(D) 0H =d=. nt(D)(2) 0H =e=. nt(D)(1) 0H =f=. nt(D)(4) 0H =g=. nt(D)(@) 0H =h=. nt(D)(C) 0H =i=. nt(D)(D) 0H =J=. d%$sMoutput5putMline(=(fte e/tend of one inde/# Count H = XX nt5!ount). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop fo J in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =ON= XX J XX =O H = XX nt(i)(J)). end loop. end loop. nt5ti$. d%$sMoutput5putMline(=(fte ti$ of one inde/e# Count H = XX nt5!ount). nt5ti$(1). d%$sMoutput5putMline(=(fte ti$ of two inde/es# Count H = XX nt5!ount). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop fo J in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =ON= XX J XX =O H = XX nt(i)(J)). end loop. end loop. nt5delete(1). d%$sMoutput5putMline(=(fte delete of se!ond inde/# Count H = XX nt5!ount). d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). loop e/it when v H @. fo J in 255nt5!ountG2 loop d%$sMoutput5putMline(=ntN= XX v XX =ON= XX J XX =O H = XX nt(v)(J)). end loop. v 0H v G 2. Copy rights are reserved. 243 if vH 1 then v 0H 4. end if. end loop. nt5delete. d%$sMoutput5putMline(=(fte delete of entie nested ta%le# Count H = XX nt5!ount). 'ND. Output0 Count H @ No li$it to Nested Ta%les N'ST'D T()L' 'L'M'NTS ntN2ON2O H ( ntN2ON1O H ) ntN2ON4O H C ntN2ON@O H D ntN1ON2O H ' ntN1ON1O H B ntN1ON4O H 8 ntN1ON@O H : ntN4ON2O H I ntN4ON1O H > ntN4ON4O H F ntN4ON@O H L ntN@ON2O H M ntN@ON1O H N ntN@ON4O H O ntN@ON@O H A Bist inde/ H 2 Last inde/ H @ Ne/t inde/ H 4 Aevious inde/ H 1 Inde/ 1 e/ists (fte e/tend of one inde/# Count H D N'ST'D T()L' 'L'M'NTS ntN2ON2O H ( ntN2ON1O H ) Copy rights are reserved. 244 ntN2ON4O H C ntN2ON@O H D ntN2ONCO H Q ntN2ONDO H R ntN1ON2O H ' ntN1ON1O H B ntN1ON4O H 8 ntN1ON@O H : ntN1ONCO H S ntN1ONDO H T ntN4ON2O H I ntN4ON1O H > ntN4ON4O H F ntN4ON@O H L ntN4ONCO H U ntN4ONDO H 9 ntN@ON2O H M ntN@ON1O H N ntN@ON4O H O ntN@ON@O H A ntN@ONCO H 6 ntN@ONDO H + ntNCON2O H * ntNCON1O H Z ntNCON4O H a ntNCON@O H % ntNCONCO H ! ntNCONDO H d ntNDON2O H e ntNDON1O H f ntNDON4O H g ntNDON@O H h ntNDONCO H i ntNDONDO H J (fte ti$ of one inde/e# Count H C (fte ti$ of two inde/es# Count H 4 N'ST'D T()L' 'L'M'NTS ntN2ON2O H ( ntN2ON1O H ) Copy rights are reserved. 245 ntN2ON4O H C ntN1ON2O H ' ntN1ON1O H B ntN1ON4O H 8 ntN4ON2O H I ntN4ON1O H > ntN4ON4O H F (fte delete of se!ond inde/# Count H 1 N'ST'D T()L' 'L'M'NTS ntN2ON2O H ( ntN2ON1O H ) ntN2ON4O H C ntN4ON2O H I ntN4ON1O H > ntN4ON4O H F (fte delete of entie nested ta%le# Count H 3 '/40 D'CL(R' t7pe t2 is ta%le of va!ha(1) inde/ %7 %ina7Mintege. t7pe t1 is ta%le of t2 inde/ %7 %ina7Mintege. i%t t1. flag %oolean. )'8IN d%$sMoutput5putMline(=Count H = XX i%t5!ount). if i%t5li$it is null then d%$sMoutput5putMline(=No li$it to Inde/"%7 Ta%les=). else d%$sMoutput5putMline(=Li$it H = XX i%t5li$it). end if. i%t(2)(2) 0H =a=. i%t(@)(C) 0H =%=. i%t(C)(2) 0H =!=. i%t(D)(1) 0H =d=. i%t(W)(4) 0H =e=. i%t(4)(@) 0H =f=. d%$sMoutput5putMline(=IND'+")* T()L' 'L'M'NTS=). d%$sMoutput5putMline(=i%t(N2ON2O H = XX i%t(2)(2)). d%$sMoutput5putMline(=i%t(N@ONCO H = XX i%t(@)(C)). d%$sMoutput5putMline(=i%t(NCON2O H = XX i%t(C)(2)). Copy rights are reserved. 246 d%$sMoutput5putMline(=i%t(NDON1O H = XX i%t(D)(1)). d%$sMoutput5putMline(=i%t(NWON4O H = XX i%t(W)(4)). d%$sMoutput5putMline(=i%t(N4ON@O H = XX i%t(4)(@)). d%$sMoutput5putMline(=Bist Inde/ H = XX i%t5fist). d%$sMoutput5putMline(=Last Inde/ H = XX i%t5last). d%$sMoutput5putMline(=Ne/t Inde/ H = XX i%t5ne/t(4)). d%$sMoutput5putMline(=Aio Inde/ H = XX i%t5pio(W)). i%t(2)(1) 0H =g=. i%t(2)(4) 0H =h=. i%t(2)(@) 0H =i=. i%t(2)(C) 0H =&=. i%t(2)(D) 0H =l=. i%t(2)(V) 0H =$=. i%t(2)(W) 0H =n=. d%$sMoutput5putMline(=Count H = XX i%t5!ount). d%$sMoutput5putMline(=IND'+")* T()L' 'L'M'NTS=). fo i in 255W loop d%$sMoutput5putMline(=i%tN2ON= XX i XX =O H = XX i%t(2)(i)). end loop. d%$sMoutput5putMline(=i%t(N@ONCO H = XX i%t(@)(C)). d%$sMoutput5putMline(=i%t(NCON2O H = XX i%t(C)(2)). d%$sMoutput5putMline(=i%t(NDON1O H = XX i%t(D)(1)). d%$sMoutput5putMline(=i%t(NWON4O H = XX i%t(W)(4)). d%$sMoutput5putMline(=i%t(N4ON@O H = XX i%t(4)(@)). flag 0H i%t5e/ists(4). if flag H tue then d%$sMoutput5putMline(=Inde/ 4 e/ists=). else d%$sMoutput5putMline(=Inde/ 4 e/ists=). end if. i%t5delete(2). d%$sMoutput5putMline(=(fte delete of fist inde/# Count H = XX i%t5!ount). i%t5delete(@). d%$sMoutput5putMline(=(fte delete of fouth inde/# Count H = XX i%t5!ount). d%$sMoutput5putMline(=IND'+")* T()L' 'L'M'NTS=). d%$sMoutput5putMline(=i%t(NCON2O H = XX i%t(C)(2)). d%$sMoutput5putMline(=i%t(NDON1O H = XX i%t(D)(1)). d%$sMoutput5putMline(=i%t(NWON4O H = XX i%t(W)(4)). d%$sMoutput5putMline(=i%t(N4ON@O H = XX i%t(4)(@)). Copy rights are reserved. 247 i%t5delete. d%$sMoutput5putMline(=(fte delete of entie inde/"%7 ta%le# Count H = XX i%t5!ount). 'ND. Output0 Count H 3 No li$it to Inde/"%7 Ta%les IND'+")* T()L' 'L'M'NTS i%t(N2ON2O H a i%t(N@ONCO H % i%t(NCON2O H ! i%t(NDON1O H d i%t(NWON4O H e i%t(N4ON@O H f Bist Inde/ H 2 Last Inde/ H W Ne/t Inde/ H @ Aio Inde/ H D Count H D IND'+")* T()L' 'L'M'NTS i%tN2ON2O H a i%tN2ON1O H g i%tN2ON4O H h i%tN2ON@O H i i%tN2ONCO H & i%tN2ONDO H l i%tN2ONVO H $ i%tN2ONWO H n i%t(N@ONCO H % i%t(NCON2O H ! i%t(NDON1O H d i%t(NWON4O H e i%t(N4ON@O H f Inde/ 4 e/ists (fte delete of fist inde/# Count H C (fte delete of fouth inde/# Count H @ IND'+")* T()L' 'L'M'NTS i%t(NCON2O H ! i%t(NDON1O H d Copy rights are reserved. 248 i%t(NWON4O H e i%t(N4ON@O H f (fte delete of entie inde/"%7 ta%le# Count H 3 '/@0 D'CL(R' t7pe t2 is ta%le of va!ha(1) inde/ %7 %ina7Mintege. t7pe t1 is ta%le of t2 inde/ %7 %ina7Mintege. t7pe t4 is ta%le of t1. nt t4 0H t4(). ! nu$%e 0H DC. )'8IN nt5e/tend(1). d%$sMoutput5putMline(=Count H = XX nt5!ount). fo i in 255nt5!ount loop fo J in 255nt5!ount loop fo & in 255nt5!ount loop nt(i)(J)(&) 0H !h(!). ! 0H ! G 2. end loop. end loop. end loop. d%$sMoutput5putMline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop fo J in 255nt5!ount loop fo & in 255nt5!ount loop d%$sMoutput5putMline(=ntN= XX i XX =ON= XX J XX =ON= XX & XX =O H = XX nt(i)(J)(&)). end loop. end loop. end loop. 'ND. Output0 Count H 1 N'ST'D T()L' 'L'M'NTS ntN2ON2ON2O H ( ntN2ON2ON1O H ) ntN2ON1ON2O H C ntN2ON1ON1O H D Copy rights are reserved. 249 ntN1ON2ON2O H ' ntN1ON2ON1O H B ntN1ON1ON2O H 8 ntN1ON1ON1O H : O)>'CTS US'D IN T:' '+(MAL'S SQL- sele!t E fo$ student. SNO SN(M' SM(RFS """""""""" """""""""""""" """""""""" 2 sað 233 1 sinu 133 4 div7a 433 @ $anogni @33 SQL- !eate o epla!e t7pe add as o%Je!t(hno nu$%e(1)#!it7 va!ha(23)).? SQL- sele!t E fo$ e$plo7. 'N(M' >O) (DDR'SS(:NO# CIT*) """""""""" """""""""" """"""""""""""""""""""""""""" RanJit !le& (DDR(22# =h7d=) Satish $anage (DDR(11# =%ang=) Sinu enginee (DDR(44# =&o!hi=) Copy rights are reserved. 250 'RROR :(NDLIN8 AL?SQL i$ple$ents eo handling with e/!eptions and e/!eption handles5 '/!eptions !an %e asso!iated with oa!le eos o with 7ou own use"defined eos5 )7 using e/!eptions and e/!eption handles# 7ou !an $a&e 7ou AL?SQL poga$s o%ust and a%le to deal with %oth une/pe!ted and e/pe!ted eos duing e/e!ution5 'RROR T*A'S Co$pile"ti$e eos Runti$e eos 'os that o!!u duing the !o$pilation phase ae dete!ted %7 the AL?SQL engine and epoted %a!& to the use# we have to !oe!t the$5 Runti$e eos ae dete!ted %7 the AL?SQL unti$e engine whi!h !an poga$$ati!all7 aise and !aught %7 e/!eption handles5 '/!eptions ae designed fo un"ti$e eo handling# athe than !o$pile"ti$e eo handling5 :(NDLIN8 '+C'ATIONS Copy rights are reserved. 251 6hen e/!eption is aised# !ontol passes to the e/!eption se!tion of the %lo!&5 The e/!eption se!tion !onsists of handles fo so$e o all of the e/!eptions5 (n e/!eption handle !ontains the !ode that is e/e!uted when the eo asso!iated with the e/!eption o!!us# and the e/!eption is aised5 S7nta/0 '+C'ATION 6hen e/!eptionMna$e then SeUuen!eMofMstate$ents. 6hen e/!eptionMna$e then SeUuen!eMofMstate$ents. 6hen othes then SeUuen!eMofMstate$ents. 'ND. '+C'ATION T*A'S Aedefined e/!eptions Use"defined e/!eptions AR'D'BIN'D '+C'ATIONS Oa!le has pedefined seveal e/!eptions that !oesponds to the $ost !o$$on oa!le eos5 Li&e the pedefined t7pes# the identifies of these e/!eptions ae defined in the ST(ND(RD pa!&age5 )e!ause of this# the7 ae alead7 availa%le to the poga$# it is not ne!essa7 to de!lae the$ in the de!laative se!ion5 '/20 D'CL(R' a nu$%e. % va!ha(1). vM$a&s nu$%e. !uso ! is sele!t E fo$ student. t7pe t is vaa7(4) of va!ha(1). va t 0H t(=a=#=%=). va2 t. )'8IN "" NOMD(T(MBOUND )'8IN sele!t s$a&s into vM$a&s fo$ student whee sno H C3. '+C'ATION when noMdataMfound then Copy rights are reserved. 252 d%$sMoutput5putMline(=Invalid student nu$%e=). 'ND. "" CURSORM(LR'(D*MOA'N )'8IN open !. open !. '+C'ATION when !usoMalead7Mopen then d%$sMoutput5putMline(=Cuso is alead7 opened=). 'ND. "" IN9(LIDMCURSOR )'8IN !lose !. open !. !lose !. !lose !. '+C'ATION when invalidM!uso then d%$sMoutput5putMline(=Cuso is alead7 !losed=). 'ND. "" TOOMM(N*MRO6S )'8IN sele!t s$a&s into vM$a&s fo$ student whee sno - 2. '+C'ATION when tooM$an7Mows then d%$sMoutput5putMline(=Too $an7 values ae !o$ing to $a&s vaia%le=). 'ND. "" Z'ROMDI9ID' )'8IN a 0H C?3. '+C'ATION when TeoMdivide then d%$sMoutput5putMline(=Divided %7 Teo " invalid opeation=). 'ND. "" 9(LU'M'RROR )'8IN % 0H =sað=. '+C'ATION when valueMeo then d%$sMoutput5putMline(=Invalid sting length=). 'ND. "" IN9(LIDMNUM)'R Copy rights are reserved. 253 )'8IN inset into student values(=a=#=sinu=#233). '+C'ATION when invalidMnu$%e then d%$sMoutput5putMline(=Invalid nu$%e=). 'ND. "" SU)SCRIATMOUTSID'MLIMIT )'8IN va(@) 0H =!=. '+C'ATION when su%s!iptMoutsideMli$it then d%$sMoutput5putMline(=Inde/ is geate than the li$it=). 'ND. "" SU)SCRIATM)'*ONDMCOUNT )'8IN va(4) 0H =!=. '+C'ATION when su%s!iptM%e7ondM!ount then d%$sMoutput5putMline(=Inde/ is geate than the !ount=). 'ND. "" COLL'CTIONMISMNULL )'8IN va2(2) 0H =a=. '+C'ATION when !olle!tionMisMnull then d%$sMoutput5putMline(=Colle!tion is e$pt7=). 'ND. "" 'ND. Output0 Invalid student nu$%e Cuso is alead7 opened Cuso is alead7 !losed Too $an7 values ae !o$ing to $a&s vaia%le Divided %7 Teo " invalid opeation Invalid sting length Invalid nu$%e Inde/ is geate than the li$it Inde/ is geate than the !ount Colle!tion is e$pt7 Copy rights are reserved. 254 '/10 D'CL(R' ! nu$%e. )'8IN ! 0H C?3. '+C'ATION when TeoMdivide then d%$sMoutput5putMline(=Invalid Opeation=). when othes then d%$sMoutput5putMline(=Bo$ OT:'RS handle0 Invalid Opeation=). 'ND. Output0 Invalid Opeation US'R"D'BIN'D '+C'ATIONS ( use"defined e/!eption is an eo that is defined %7 the poga$$e5 Use"defined e/!eptions ae de!laed in the de!laative se!ion of a AL?SQL %lo!&5 >ust li&e vaia%les# e/eptions have a t7pe '+C'ATION and s!ope5 R(ISIN8 '+C'ATIONS Use"defined e/!eptions ae aised e/pli!itl7 via the R(IS' state$ent5 '/0 D'CL(R' e e/!eption. )'8IN aise e. '+C'ATION when e then d%$sMoutput5putMline(=e is aised=). 'ND. Output0 e is aised )ULIT"IN 'RROR BUNCTIONS Copy rights are reserved. 255 SQLCOD' (ND SQL'RRM SQLCOD' etuns the !uent eo !ode# and SQL'RRM etuns the !uent eo $essage te/t. Bo use"defined e/!eption SQLCOD' etuns 2 and SQL'RRM etuns Puse"deifned e/!eptionQ5 SQL'RRM wiil ta&e onl7 negative value e/!ept 2335 If an7 positive value othe than 233 etuns non"oa!le e/!eption5 '/20 D'CL(R' e e/!eption. vMdna$e va!ha(23). )'8IN "" US'R"D'BIN'D '+C'ATION )'8IN aise e. '+C'ATION when e then d%$sMoutput5putMline(SQLCOD' XX = = XX SQL'RRM). 'ND. "" AR'D'BIN'D '+C'ATION )'8IN sele!t dna$e into vMdna$e fo$ dept whee deptno H C3. '+C'ATION when noMdataMfound then d%$sMoutput5putMline(SQLCOD' XX = = XX SQL'RRM). 'ND. 'ND. Output0 2 Use"Defined '/!eption 233 OR("32@340 no data found '/10 )'8IN d%$sMoutput5putMline(SQL'RRM(233)). d%$sMoutput5putMline(SQL'RRM(3)). d%$sMoutput5putMline(SQL'RRM(2)). d%$sMoutput5putMline(SQL'RRM("233)). Copy rights are reserved. 256 d%$sMoutput5putMline(SQL'RRM("C33)). d%$sMoutput5putMline(SQL'RRM(133)). d%$sMoutput5putMline(SQL'RRM("S33)). 'ND. Output0 OR("32@340 no data found OR("33330 no$al# su!!essful !o$pletion Use"Defined '/!eption OR("332330 no data found OR("33C330 Message C33 not found. podu!tHRD)MS. fa!ilit7HOR( "1330 non"OR(CL' e/!eption OR("33S330 invalid SQL state$ent D)MSMUTILIT*5BORM(TM'RRORMST(CF The %uilt"in fun!tion# li&e SQL'RRM# etuns the $essage asso!iated with the !uent eo5 It diffes fo$ SQL'RRM in two wa7s0 Its length is not esti!ted. it will etun the full eo $essage sting5 *ou !an not pass an eo !ode nu$%e to this fun!tion. it !annot %e used to etun the $essage fo a ando$ eo !ode5 '/0 D'CL(R' v nu$%e 0H =a%=. )'8IN null. '+C'ATION when othes then d%$sMoutput5putMline(d%$sMutilit75fo$atMeoMsta!&). 'ND. Output0 de!lae E 'RROR at line 20 OR("3DC310 AL?SQL0 nu$ei! o value eo0 !haa!te to nu$%e !onvesion eo OR("3DC210 at line 1 D)MSMUTILIT*5BORM(TMC(LLMST(CF Copy rights are reserved. 257 This fun!tion etuns a fo$atted sting showing the e/e!ution !all sta!& inside 7ou AL?SQL appli!ation5 Its usefulness is not esti!ted to eo $anage$ent. 7ou will also find its hand7 fo ta!ing the e/e!tution of 7ou !ode5 *ou $a7 not use this fun!tion in e/!eption %lo!&5 '/0 )'8IN d%$sMoutput5putMline(d%$sMutilit75fo$atM!allMsta!&). 'ND. Output0 """"" AL?SQL Call Sta!& """"" O%Je!tMhandle lineMnu$%e o%Je!tMna$e DSVD3@VW 1 anon7$ous %lo!& D)MSMUTILIT*5BORM(TM'RRORM)(CFTR(C' It displa7s the e/e!ution sta!& at the point whee an e/!eption was aised5 Thus # 7ou !an !all this fun!tion with an e/!eption se!tion at the top level of 7ou sta!& and still find out whee the eo was aised deep within the !all sta!&5 '/0 CR'(T' OR R'AL(C' AROC'DUR' A2 IS )'8IN d%$sMoutput5putMline(=fo$ po!edue 2=). aise valueMeo. 'ND A2. CR'(T' OR R'AL(C' AROC'DUR' A1 IS )'8IN d%$sMoutput5putMline(=fo$ po!edue 1=). p2. 'ND A1. CR'(T' OR R'AL(C' AROC'DUR' A4 IS )'8IN d%$sMoutput5putMline(=fo$ po!edue 4=). p1. '+C'ATION when othes then d%$sMoutput5putMline(d%$sMutilit75fo$atMeoM%a!&ta!e). 'ND A4. Copy rights are reserved. 258 Output0 SQL- e/e! p4 fo$ po!edue 4 fo$ po!edue 1 fo$ po!edue 2 OR("3DC210 at bS(F'T:5A2b# line @ OR("3DC210 at bS(F'T:5A1b# line @ OR("3DC210 at bS(F'T:5A4b# line @ '+C'ATIONMINIT AR(8M( Using this 7ou !an asso!iate a na$ed e/!eption with a pati!ula oa!le eo5 This gives 7ou the a%ilit7 to tap this eo spe!ifi!all7# athe than via an OT:'RS handle5 S7nta/0 AR(8M( '+C'ATIONMINIT(e(ception_name# oracle_error_number). '/0 D'CL(R' e e/!eption. pag$a e/!eptionMinit(e#"2@VD). ! nu$%e. )'8IN ! 0H C?3. '+C'ATION when e then d%$sMoutput5putMline(=Invalid Opeation=). 'ND. Output0 Invalid Opeation R(IS'M(AALIC(TIONM'RROR *ou !an use this %uilt"in fun!tion to !eate 7ou own eo $essages# whi!h !an %e $oe des!iptive than na$ed e/!eptions5 S7nta/0 R(IS'M(AALIC(TIONM'RROR(error_number# error_me!!a"e## Neep_error!_'la"O). Copy rights are reserved. 259 The )oolean paa$ete eep_error!_'la" is optional5 If it is TRU'# the new eo is added to the list of eos alead7 aised5 If it is B(LS'# whi!h is default# the new eo will epla!e the !uent list of eos5 '/0 D'CL(R' ! nu$%e. )'8IN ! 0H C?3. '+C'ATION when TeoMdivide then aiseMappli!ationMeo("13111#=Invalid Opeation=). 'ND. Output0 D'CL(R' E 'RROR at line 20 OR("131110 Invalid Opeation OR("3DC210 at line V '+C'ATION AROA(8(TION '/!eptions !an o!!u in the de!laative# the e/e!uta%le# o the e/!eption se!tion of a AL?SQL %lo!&5 '+C'ATION R(IS'D IN T:' '+'CU(T()L' S'CTION '/!eptions aised in e/e!uata%le se!tion !an %e handled in !uent %lo!& o oute %lo!&5 '/20 D'CL(R' e e/!eption. )'8IN )'8IN aise e. 'ND. '+C'ATION when e then d%$sMoutput5putMline(=e is aised=). Copy rights are reserved. 260 'ND. Output0 e is aised '/10 D'CL(R' e e/!eption. )'8IN )'8IN aise e. 'ND. 'ND. Output0 'RROR at line 20 OR("3DC230 AL?SQL0 unhandled use"defined e/!eption OR("3DC210 at line C '+C'ATION R(IS'D IN T:' D'CL(R(TI9' S'CTION '/!eptions aised in the de!laative se!ion $ust %e handled in the oute %lo!&5 '/20 D'CL(R' ! nu$%e(4) 0H =a%!d=. )'8IN d%$sMoutput5putMline(=:ello=). '+C'ATION when othes then d%$sMoutput5putMline(=Invalid sting length=). 'ND. Output0 'RROR at line 20 OR("3DC310 AL?SQL0 nu$ei! o value eo0 !haa!te to nu$%e !onvesion eo OR("3DC210 at line 1 '/10 )'8IN D'CL(R' Copy rights are reserved. 261 ! nu$%e(4) 0H =a%!d=. )'8IN d%$sMoutput5putMline(=:ello=). '+C'ATION when othes then d%$sMoutput5putMline(=Invalid sting length=). 'ND. '+C'ATION when othes then d%$sMoutput5putMline(=Bo$ oute %lo!&0 Invalid sting length=). 'ND. Output0 Bo$ oute %lo!&0 Invalid sting length '+C'ATION R(IS'D IN T:' '+C'ATION S'CTION '/!eptions aised in the de!laative se!ion $ust %e handled in the oute %lo!&5 '/20 D'CL(R' e2 e/!eption. e1 e/!eption. )'8IN aise e2. '+C'ATION when e2 then d%$sMoutput5putMline(=e2 is aised=). aise e1. when e1 then d%$sMoutput5putMline(=e1 is aised=). 'ND. Output0 e2 is aised D'CL(R' E 'RROR at line 20 OR("3DC230 AL?SQL0 unhandled use"defined e/!eption OR("3DC210 at line S OR("3DC230 AL?SQL0 unhandled use"defined e/!eption Copy rights are reserved. 262 '/10 D'CL(R' e2 e/!eption. e1 e/!eption. )'8IN )'8IN aise e2. '+C'ATION when e2 then d%$sMoutput5putMline(=e2 is aised=). aise e1. when e1 then d%$sMoutput5putMline(=e1 is aised=). 'ND. '+C'ATION when e1 then d%$sMoutput5putMline(=Bo$ oute %lo!&0 e1 is aised=). 'ND. Output0 e2 is aised Bo$ oute %lo!&0 e1 is aised '/40 D'CL(R' e e/!eption. )'8IN aise e. '+C'ATION when e then d%$sMoutput5putMline(=e is aised=). aise e. 'ND. Output0 e is aised D'CL(R' E 'RROR at line 20 OR("3DC230 AL?SQL0 unhandled use"defined e/!eption OR("3DC210 at line W OR("3DC230 AL?SQL0 unhandled use"defined e/!eption Copy rights are reserved. 263 R'STRICTIONS *ou !an not pass e/!eption as an agu$ent to a su%poga$5 D(T()(S' TRI88'RS Copy rights are reserved. 264 Tigges ae si$ila to po!edues o fun!tions in that the7 ae na$ed AL?SQL %lo!&s with de!laative# e/e!uta%le# and e/!eption handling se!tions5 ( tigge is e/e!uted i$pli!itl7 wheneve the tiggeing event happens5 The a!t of e/e!uting a tigge is &nown as fiing the tigge5 R'STRICTIONS ON TRI88'R'S Li&e pa!&ages# tigges $ust %e stoed as stand"alone o%Je!ts in the data%ase and !annot %e lo!al to a %lo!& o pa!&age5 ( tigge does not a!!ept agu$ents5 US' OB TRI88'RS Maintaining !o$ple/ integit7 !onstaints not possi%le though de!laative !onstaints ena%le at ta%le !eation5 (uditing info$ation in a ta%le %7 e!oding the !hanges $ade and who $ade the$5 (uto$ati!all7 signaling othe poga$s that a!tion needs to ta&e pla!e when !hages ae $ade to a ta%le5 Aefo$ validation on !hanges %eing $ade to ta%les5 (uto$ate $aintenan!e of the data%ase5 T*A'S OB TRI88'RS DML Tigges Instead of Tigges DDL Tigges S7ste$ Tigges Suspend Tigges C(T'8ORI'S Ti$ing "" )efoe o (fte Level "" Row o State$ent Row level tigge fies on!e fo ea!h ow affe!ted %7 the tiggeing state$ent5 Row level tigge is identified %7 the BOR '(C: RO6 !lause5 Copy rights are reserved. 265 State$ent level tigge fies on!e eithe %efoe o afte the state$ent5 DML TRI88'R S*NT(+ Ceate o epla!e tigge ,tri""er_name- ^)efoe X afte_ ^inset o update o delete_ on ,table_name- NBo ea!h owO N6hen (R)O NDe!laeO "" de!laation )egin "" tigge %od7 N'/!eptionO "" e/!eption se!tion 'nd ,tri""er_name-. DML TRI88'RS ( DML tigge is fied on an INS'RT# UAD(T'# o D'L'T' opeation on a data%ase ta%le5 It !an %e fied eithe %efoe o afte the state$ent e/e!utes# and !an %e fied on!e pe affe!ted ow# o on!e pe state$ent5 The !o$%ination of these fa!tos dete$ines the t7pes of the tigges5 These ae a total of 21 possi%le t7pes (4 state$ents E 1 ti$ing E 1 levels)5 ST(T'M'NT L'9'L State$ent level tigge fies onl7 on!e5 '/0 SQL- !eate ta%le state$entMlevel(!ount va!ha(C3)). CR'(T' OR R'AL(C' TRI88'R ST(T'M'NTML'9'LMTRI88'R afte update on student )'8IN inset into state$entMlevel values(=State$ent level fied=). 'ND ST(T'M'NTML'9'LMTRI88'R. Output0 Copy rights are reserved. 266 SQL- update student set s$a&sHC33. 4 ows updated5 SQL- sele!t E fo$ state$entMlevel. COUNT """""""""""""""""""""""""""" State$ent level fied RO6 L'9'L Row level tigge fies on!e fo ea!h ow affe!ted %7 the tiggeing state$ent5 '/0 SQL- !eate ta%le owMlevel(!ount va!ha(C3)). CR'(T' OR R'AL(C' TRI88'R RO6ML'9'LMTRI88'R afte update on student )'8IN inset into owMlevel values(=Row level fied=). 'ND RO6ML'9'LMTRI88'R. Output0 SQL- update student set s$a&sHC33. 4 ows updated5 SQL- sele!t E fo$ state$entMlevel. COUNT """""""""""""""""""""""""""" Row level fied Row level fied Row level fied ORD'R OB DML TRI88'R BIRIN8 Copy rights are reserved. 267 )efoe state$ent level )efoe ow level (fte ow level (fte state$ent level '/0 Suppose we have a follwing ta%le5 SQL- sele!t E fo$ student. NO N(M' M(RFS """"" """"""" """""""""" 2 a 233 1 % 133 4 ! 433 @ d @33 SQL- !eate ta%le fiingMode(ode va!ha(C3)). CR'(T' OR R'AL(C' TRI88'R )'BOR'MST(T'M'NT %efoe inset on student )'8IN inset into fiingMode values(=)efoe State$ent Level=). 'ND )'BOR'MST(T'M'NT. CR'(T' OR R'AL(C' TRI88'R )'BOR'MRO6 %efoe inset on student fo ea!h ow )'8IN inset into fiingMode values(=)efoe Row Level=). 'ND )'BOR'MRO6. CR'(T' OR R'AL(C' TRI88'R (BT'RMST(T'M'NT afte inset on student )'8IN inset into fiingMode values(=(fte State$ent Level=). 'ND (BT'RMST(T'M'NT. CR'(T' OR R'AL(C' TRI88'R (BT'RMRO6 afte inset on student fo ea!h ow )'8IN Copy rights are reserved. 268 inset into fiingMode values(=(fte Row Level=). 'ND (BT'RMRO6. Output0 SQL- sele!t E fo$ fiingMode. no ows sele!ted SQL- inset into student values(C#=e=#C33). 2 ow !eated5 SQL- sele!t E fo$ fiingMode. ORD'R """""""""""""""""""""""""""""""""""""""""""""""""" )efoe State$ent Level )efoe Row Level (fte Row Level (fte State$ent Level SQL- sele!t E fo$ student. NO N(M' M(RFS """" """""""" """""""""" 2 a 233 1 % 133 4 ! 433 @ d @33 C e C33 CORR'L(TION ID'NTIBI'RS IN RO6"L'9'L TRI88'RS Inside the tigge# 7ou !an a!!ess the data in the ow that is !uentl7 %eing po!essed5 This is a!!o$plished though two !oelation identifies " 0old and 0new5 ( correlation identi'ier is a spe!ial &ind of AL?SQL %ind vaia%le5 The !olon in font of ea!h indi!ates that the7 ae %ind vaia%les# in the sense of host vaia%les used in e$%edded Copy rights are reserved. 269 AL?SQL# and indi!ates that the7 ae not egula AL?SQL vaia%les5 The AL?SQL !o$pile will teat the$ as e!ods of t7pe TiggeingMta%leLRO6T*A'5 (lthough s7nta!ti!all7 the7 ae teated as e!ods# in ealit7 the7 ae not5 0old and 0new ae also &nown as p!eudorecord!# fo this eason5 TRI88'RIN8 ST(T'M'NT 0OLD 0N'6 """""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""""""""""" INS'RT all fields ae NULL5 values that will %e inseted 6hen the state$ent is !o$pleted5 UAD(T' oiginal values fo new values that will %e updated the ow %efoe the when the state$ent is !o$pleted5 update5 D'L'T' oiginal values %efoe all fields ae NULL5 the ow is deleted5 '/0 SQL- !eate ta%le $a&s(no nu$%e(1) oldM$a&s nu$%e(4)#newM$a&s nu$%e(4)). CR'(T' OR R'AL(C' TRI88'R OLDMN'6 %efoe inset o update o delete on student fo ea!h ow )'8IN inset into $a&s values(0old5no#0old5$a&s#0new5$a&s). 'ND OLDMN'6. Output0 SQL- sele!t E fo$ student. NO N(M' M(RFS """"" """"""" """""""""" 2 a 233 1 % 133 4 ! 433 @ d @33 C e C33 SQL- sele!t E fo$ $a&s. Copy rights are reserved. 270 no ows sele!ted SQL- inset into student values(D#=f=#D33). 2 ow !eated5 SQL- sele!t E fo$ student. NO N(M' M(RFS """" """""""" """""""""" 2 a 233 1 % 133 4 ! 433 @ d @33 C e C33 D f D33 SQL- sele!t E fo$ $a&s. NO OLDMM(RFS N'6MM(RFS """" """"""""""""""" """"""""""""""" D33 SQL- update student set $a&sHCCC whee noHC. 2 ow updated5 SQL- sele!t E fo$ student. NO N(M' M(RFS """"" """"""" """""""""" 2 a 233 1 % 133 4 ! 433 @ d @33 C e CCC D f D33 Copy rights are reserved. 271 SQL- sele!t E fo$ $a&s. NO OLDMM(RFS N'6MM(RFS """""" """""""""""""""" """"""""""""""" D33 C C33 CCC SQL- delete student whee no H 1. 2 ow deleted5 SQL- sele!t E fo$ student. NO N(M' M(RFS """" """""""" """""""""" 2 a 233 4 ! 433 @ d @33 C e CCC D f D33 SQL- sele!t E fo$ $a&s. NO OLDMM(RFS N'6MM(RFS """"" """""""""""""" """""""""""""""" D33 C C33 CCC 1 133 R'B'R'NCIN8 CL(US' If desied# 7ou !an use the R'B'R'NCIN8 !lause to spe!if7 a diffeent na$e fo 0old ane 0new5 This !lause is found afte the tiggeing event# %efoe the 6:'N !lause5 S7nta/0 R'B'R'NCIN8 Nold as oldMna$eO Nnew as newMna$eO '/0 CR'(T' OR R'AL(C' TRI88'R R'B'R'NC'MTRI88'R Copy rights are reserved. 272 %efoe inset o update o delete on student efeen!ing old as oldMstudent new as newMstudent fo ea!h ow )'8IN inset into $a&s values(0oldMstudent5no#0oldMstudent5$a&s#0newMstudent5$a&s). 'ND R'B'R'NC'MTRI88'R. 6:'N CL(US' 6:'N !lause is valid fo ow"level tigges onl75 If pesent# the tigge %od7 will %e e/e!uted onl7 fo those ows that $eet the !ondition spe!ified %7 the 6:'N !lause5 S7nta/0 6:'N tri""er_condition. 6hee tri""er_condition is a )oolean e/pession5 It will %e evaluated fo ea!h ow5 The =new and =old e!ods !an %e efeen!ed inside tri""er_condition as well# %ut li&e R'B'R'NCIN8# the !olon is not used thee5 The !olon is onl7 valid in the tigge %od75 '/0 CR'(T' OR R'AL(C' TRI88'R 6:'NMTRI88'R %efoe inset o update o delete on student efeen!ing old as oldMstudent new as newMstudent fo ea!h ow when (newMstudent5$a&s - C33) )'8IN inset into $a&s values(0oldMstudent5no#0oldMstudent5$a&s#0newMstudent5$a&s). 'ND 6:'NMTRI88'R. TRI88'R AR'DIC(T'S Thee ae thee )oolean fun!tions that 7ou !an use to dete$ine what the opeation is5 The pedi!ates ae INS'RTIN8 UAD(TIN8 D'L'TIN8 '/0 SQL- !eate ta%le pedi!ates(opeation va!ha(13)). Copy rights are reserved. 273 CR'(T' OR R'AL(C' TRI88'R AR'DIC(T'MTRI88'R %efoe inset o update o delete on student )'8IN if inseting then inset into pedi!ates values(=Inset=). elsif updating then inset into pedi!ates values(=Update=). elsif deleting then inset into pedi!ates values(=Delete=). end if. 'ND AR'DIC(T'MTRI88'R. Output0 SQL- delete student whee noH2. 2 ow deleted5 SQL- sele!t E fo$ pedi!ates. MS8 """"""""""""""" Delete SQL- inset into student values(V#=g=#V33). 2 ow !eated5 SQL- sele!t E fo$ pedi!ates. MS8 """"""""""""""" Delete Inset SQL- update student set $a&s H VVV whee noHV. 2 ow updated5 SQL- sele!t E fo$ pedi!ates. Copy rights are reserved. 274 MS8 """"""""""""""" Delete Inset Update INST'(D"OB TRI88'RS Instead"of tigges fie instead of a DML opeation5 (lso# instead"of tigges !an %e defined onl7 on views5 Instead"of tigges ae used in two !ases0 To allow a view that would othewise not %e $odifia%le to %e $odified5 To $odif7 the !olu$ns of a nested ta%le !olu$n in a view5 '/0 SQL- !eate view e$pMdept as sele!t e$pno#ena$e#Jo%#dna$e#lo!#sal#e5deptno fo$ e$p e# dept d whee e5deptno H d5deptno. CR'(T' OR R'AL(C' TRI88'R INST'(DMOBMTRI88'R instead of inset on e$pMdept )'8IN inset into dept2 values(C3#=d=#=%ang=). inset into e$p2(e$pno#ena$e#Jo%#sal#deptno)values(1111#=sað=#=do!to=#W333#C3). 'ND INST'(DMOBMTRI88'R. Output0 SQL- inset into e$pMdept values(1111#=sað=#=do!to=#W333#=d=#=%ang=#C3). SQL- sele!t E fo$ e$pMdept. 'MANO 'N(M' >O) S(L DN(M' LOC D'ATNO """""""""" """""""""" """""""""""" """"""""""" """"""""""""" """"""""""""" """""""""" V4DS SMIT: CL'RF W33 R'S'(RC: D(LL(S 13 V@SS (LL'N S(L'SM(N 2D33 S(L'S C:IC(8O 43 VC12 6(RD S(L'SM(N 21C3 S(L'S C:IC(8O 43 VCDD >ON'S M(N(8'R 1SVC R'S'(RC: D(LL(S 13 VDC@ M(RTIN S(L'SM(N 21C3 S(L'S C:IC(8O 43 VDSW )L(F' M(N(8'R 1WC3 S(L'S C:IC(8O 43 VVW1 CL(RF M(N(8'R 1@C3 (CCOUNTIN8 N'6 *ORF 23 Copy rights are reserved. 275 VVWW SCOTT (N(L*ST 4333 R'S'(RC: D(LL(S 13 VW4S FIN8 AR'SID'NT C333 (CCOUNTIN8 N'6 *ORF 23 VW@@ TURN'R S(L'SM(N 2C33 S(L'S C:IC(8O 43 VWVD (D(MS CL'RF 2233 R'S'(RC: D(LL(S 13 VS33 >(M'S CL'RF SC3 S(L'S C:IC(8O 43 VS31 BORD (N(L*ST 4333 R'S'(RC: D(LL(S 13 VS4@ MILL'R CL'RF 2433 (CCOUNTIN8 N'6 *ORF 23 1111 sað do!to W333 d %ang C3 SQL- sele!t E fo$ dept. D'ATNO DN(M' LOC """""""""" """""""""""""""" """"""""""" 23 (CCOUNTIN8 N'6 *ORF 13 R'S'(RC: D(LL(S 43 S(L'S C:IC(8O @3 OA'R(TIONS )OSTON C3 d %ang SQL- sele!t E fo$ e$p. 'MANO 'N(M' >O) M8R :IR'D(T' S(L COMM D'ATNO """""""""" """""""""" """"""""""""""" """""""" """""""""""""" """"""""" """"""""" """""""""" V4DS SMIT: CL'RF VS31 2 V"D'C"W3 W33 13 V@SS (LL'N S(L'SM(N VDSW 13"B')"W2 2D33 433 43 VC12 6(RD S(L'SM(N VDSW 11"B')"W2 21C3 C33 43 VCDD >ON'S M(N(8'R VW4S 31"(AR"W2 1SVC 13 VDC@ M(RTIN S(L'SM(N VDSW 1W"S'A"W2 21C3 2@33 43 VDSW )L(F' M(N(8'R VW4S 32"M(*"W2 1WC3 43 VVW1 CL(RF M(N(8'R VW4S 3S">UN"W2 1@C3 23 VVWW SCOTT (N(L*ST VCDD 2S"(AR"WV 4333 13 VW4S FIN8 AR'SID'NT 2V"NO9"W2 C333 23 VW@@ TURN'R S(L'SM(N VDSW 3W"S'A"W2 2C33 3 43 VWVD (D(MS CL'RF VVWW 14"M(*"WV 2233 13 VS33 >(M'S CL'RF VDSW 34"D'C"W2 SC3 43 VS31 BORD (N(L*ST VCDD 34"D'C"W2 4333 13 VS4@ MILL'R CL'RF VVW1 14">(N"W1 2433 23 Copy rights are reserved. 276 1111 sað do!to W333 C3 DDL TRI88'RS Oa!le allows 7ou to define tigges that will fie when Data Definition Language state$ents ae e/e!uted5 S7nta/0 Ceate o epla!e tigge ,tri""er_name- ^)efoe X afte_ ^DDL event_ on ^data%ase X s!he$a_ N6hen (R)O NDe!laeO "" de!laation )egin "" tigge %od7 N'/!eptionO "" e/!eption se!tion 'nd ,tri""er_name-. '/0 SQL- !eate ta%le $7Mo%Je!ts(o%JMna$e va!ha(23)#o%JMt7pe va!ha(23)#o%JMowne va!ha(23)#o%JMti$e date). CR'(T' OR R'AL(C' TRI88'R CR'(T'MTRI88'R afte !eate on data%ase )'8IN inset into $7Mo%Je!ts values(s7s5di!tiona7Mo%JMna$e#s7s5di!tiona7Mo%JMt7pe# s7s5di!tiona7Mo%JMowne# s7sdate). 'ND CR'(T'MTRI88'R. Output0 SQL- sele!t E fo$ $7Mo%Je!ts. no ows sele!ted SQL- !eate ta%le stud2(no nu$%e(1)). Copy rights are reserved. 277 SQL- sele!t E fo$ $7Mo%Je!ts. O)>MN(M' O)>MT*A' O)>MO6N'R O)>MTIM' """"""""""""" """""""""""""" """""""""""""" """""""""""" STUD2 T()L' S*S 12">UL"3V SQL- !eate seUuen!e ss. SQL- !eate view studMview as sele!t E fo$ stud2. SQL- sele!t E fo$ $7Mo%Je!ts. O)>MN(M' O)>MT*A' O)>MO6N'R O)>MTIM' """""""""""""" """"""""""""" """""""""""""""" """"""""""""" STUD2 T()L' S*S 12">UL"3V SS S'QU'NC' S*S 12">UL"3V STUDM9I'6 9I'6 S*S 12">UL"3V 6:'N CL(US' If 6:'N pesent# the tigge %od7 will %e e/e!uted onl7 fo those that $eet the !ondition spe!ified %7 the 6:'N !lause5 '/0 CR'(T' OR R'AL(C' TRI88'R CR'(T'MTRI88'R afte !eate on data%ase when (s7s5di!tiona7Mo%JMt7pe H KT()L';) )'8IN inset into $7Mo%Je!ts values(s7s5di!tiona7Mo%JMna$e#s7s5di!tiona7Mo%JMt7pe# s7s5di!tiona7Mo%JMowne# s7sdate). 'ND CR'(T'MTRI88'R. S*ST'M TRI88'RS S7ste$ tigges will fie wheneve data%ase"wide event o!!us5 The following ae the data%ase event tigges5 To !eate s7ste$ tigge 7ou need (DMINIST'R D(T()(S' TRI88'R pivilege5 ST(RTUA S:UTDO6N Copy rights are reserved. 278 LO8ON LO8OBB S'R9'R'RROR S7nta/0 Ceate o epla!e tigge ,tri""er_name- ^)efoe X afte_ ^Data%ase event_ on ^data%ase X s!he$a_ N6hen (R)O NDe!laeO "" de!laation se!tion )egin "" tigge %od7 N'/!eptionO "" e/!eption se!tion 'nd ,tri""er_name-. '/0 SQL- !eate ta%le useMlogs(uMna$e va!ha(23)#logMti$e ti$esta$p). CR'(T' OR R'AL(C' TRI88'R (BT'RMLO8ON afte logon on data%ase )'8IN inset into useMlogs values(use#!uentMti$esta$p). 'ND (BT'RMLO8ON. Output0 SQL- sele!t E fo$ useMlogs. no ows sele!ted SQL- !onn sað?sað SQL- sele!t E fo$ useMlogs. UMN(M' LO8MTIM' """""""""" """""""""""""""""""""""""""""""""""""""""""""""" S(F'T: 11">UL"3V 2153V52452@3333 (M SQL- !onn s7ste$?oa!le Copy rights are reserved. 279 SQL- sele!t E fo$ useMlogs. UMN(M' LO8MTIM' """""""""" """""""""""""""""""""""""""""""""""""""""""""""" S(F'T: 11">UL"3V 2153V52452@3333 (M S*ST'M 11">UL"3V 2153V54@512W333 (M SQL- !onn s!ott?tige SQL- sele!t E fo$ useMlogs. UMN(M' LO8MTIM' """""""""" """"""""""""""""""""""""""""""""""""""""""""""" S(F'T: 11">UL"3V 2153V52452@3333 (M S*ST'M 11">UL"3V 2153V54@512W333 (M SCOTT 11">UL"3V 2153W5@453S4333 (M S'R9'R'RROR The S'R9'R'RROR event !an %e used to ta!& eos that o!!u in the data%ase5 The eo !ode is availa%le inside the tigge though the S'R9'RM'RROR atti%ute fun!tion5 '/0 SQL- !eate ta%le $7Meos(eoM$sg va!ha(133)). CR'(T' OR R'AL(C' TRI88'R S'R9'RM'RRORMTRI88'R afte seveeo on data%ase )'8IN inset into $7Meos values(d%$sMutilit75fo$atMeoMsta!&). 'ND S'R9'RM'RRORMTRI88'R. Output0 SQL- !eate ta%le ss (no)). !eate ta%le ss (no)) E 'RROR at line 20 OR("33S110 $issing o invalid option SQL- sele!t E fo$ $7Meos. Copy rights are reserved. 280 'RRORMMS8 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""" OR("33S110 $issing o invalid option SQL- inset into student values(2#1#4). inset into student values(2#1#4) E 'RROR at line 20 OR("33S@10 ta%le o view does not e/ist SQL- sele!t E fo$ $7Meos. 'RRORMMS8 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""" OR("33S110 $issing o invalid option OR("33S@10 ta%le o view does not e/ist S'R9'RM'RROR (TTRI)UT' BUNCTION It ta&es a single nu$%e t7pe of agu$ent and etuns the eo at the position on the eo sta!& indi!ated %7 the agu$ent5 The position 2 is the top of the sta!&5 '/0 CR'(T' OR R'AL(C' TRI88'R S'R9'RM'RRORMTRI88'R afte seveeo on data%ase )'8IN inset into $7Meos values(seveMeo(2)). 'ND S'R9'RM'RRORMTRI88'R. SUSA'ND TRI88'RS This will fie wheneve a state$ent is suspended5 This $ight o!!u as the esult of a spa!e issue su!h as e/!eeding an allo!ated ta%lepa!e Uuota5 This fun!tionalit7 !an %e used to addess the po%le$ and allow the opeatin to !ontinue5 S7nta/0 Ceate o epla!e tigge ,tri""er_name- afte suspend on ^data%ase X s!he$a_ Copy rights are reserved. 281 N6hen (R)O NDe!laeO "" de!laation se!tion )egin "" tigge %od7 N'/!eptionO "" e/!eption se!tion 'nd ,tri""er_name-. '/0 SQL- !eate ta%lespa!e $7Mspa!e datafile =f0d$7Mfile5d%f= siTe 1$. SQL- !eate ta%le student(sno nu$%e(1)#sna$e va!ha(23)) ta%lespa!e $7Mspa!e. CR'(T' OR R'AL(C' TRI88'R SUSA'NDMTRI88'R afte suspend on data%ase )'8IN d%$sMoutput5putMline(K No oo$ to inset in 7ou ta%lespa!e=). 'ND SUSA'NDMTRI88'R. Output0 Inset $oe ows in student ta%le then # 7ou will get No oo$ to inset in 7ou ta%lespa!e (UTONOMOUS TR(NS(CTION Aio to Oa!leWi# thee was no wa7 in whi!h so$e SQL opeations within a tansa!tion !ould %e !o$$itted independent of the est of the opeations5 Oa!le allows this# howeve# though autonomou! tran!action!5 (n autonomou! tran!action is a tansa!tion that is stated within the !onte/t of anothe tansa!tion# &nown as paent tansa!tion# %ut is independent of it5 The autono$ous tansa!tion !an %e !o$$itted o olled %a!& egadless ot the state of the paent tansa!tion5 '/0 CR'(T' OR R'AL(C' TRI88'R (UTONOMOUSMTR(NS(CTIONMTRI88'R afte inset on student D'CL(R' pag$a autono$ousMtansa!tion. Copy rights are reserved. 282 )'8IN update student set $a&s H CCC. !o$$it. 'ND (UTONOMOUSMTR(NS(CTIONMTRI88'R. Output0 SQL- sele!t E fo$ student. NO N( M(RFS """"" """"" "" """""""""" 2 a 222 1 % 111 4 ! 433 SQL- inset into student values(@#=d=#@@@). SQL- sele!t E fo$ student. NO N( M(RFS """" """""" "" """""""""" 2 a CCC 1 % CCC 4 ! CCC @ d @@@ R'STRICTIONS ON (UTONOMOUS TR(NS(CTION If an autono$ous tansa!tion atte$pts to a!!ess a esou!e held %7 the $ain tansa!tion# a deadlo!& !an o!!u in 7ou poga$5 *ou !annot $a& all poga$s in a pa!&age as autono$ous with a single AR(8M( de!laation5 *ou $ust indi!ate autono$ous tansa!tions e/pli!it7 in ea!h poga$5 To e/it without eos fo$ an autono$ous tansa!tion poga$ that has e/e!uted at least one INS'RT o UAD(T' o D'L'T'# 7ou $ust pefo$ an e/pli!it !o$$it o oll%a!&5 The COMMIT and ROLL)(CF state$ents end the a!tive autono$ous tansa!tion# %ut the7 do not fo!e the te$ination of the autono$ous outine5 *ou !an have $ultiple COMMIT and?o ROLL)(CF state$ents inside 7ou autono$ous %lo!&5 *ou !an not oll%a!& to a savepoint set in the $ain tansa!tion5 Copy rights are reserved. 283 The TR(NS(CTIONS paa$ete in the oa!le initialiTation file spe!ifies the $a/i$u$ nu$%e of tansa!tions allowed !on!uentl7 in a session5 The default value is VC fo this# %ut 7ou !an in!ease the li$it5 MUT(TIN8 T()L'S Thee ae esti!tions on the ta%les and !olu$ns that a tigge %od7 $a7 a!!ess5 In ode to define these esti!tions# it is ne!essa7 to undestand $utating and !onstaining ta%les5 ( $utating ta%le is ta%le that is !uentlt7 %eing $odified %7 a DML state$ent and the tigge event also DML state$ent5 ( $utating ta%le eo o!!us when a ow"level tigge ties to e/a$ine o !hange a ta%le that is alead7 undegoing !hange5 ( !onstaining ta%le is a ta%le that $ight need to %e ead fo$ fo a efeential integit7 !onstaint5 '/0 CR'(T' OR R'AL(C' TRI88'R MUT(TIN8MTRI88'R %efoe delete on student fo ea!h ow D'CL(R' !t nu$%e. )'8IN sele!t !ount(E) into !t fo$ student whee no H 0old5no. 'ND MUT(TIN8MTRI88'R. Output0 SQL- delete student whee no H 2. delete student whee no H 2 E 'RROR at line 20 OR("3@3S20 ta%le SCOTT5STUD'NT is $utating# tigge?fun!tion $a7 not see it OR("3DC210 at bSCOTT5Tb# line @ OR("3@3WW0 eo duing e/e!ution of tigge =SCOTT5T= :O6 TO (9OID MUT(TIN8 T()L' 'RROR [ Copy rights are reserved. 284 )7 using autono$ous tansa!tion )7 using state$ent level tigge Copy rights are reserved. 285