SQL is a language for managing and manipulating databases. It is divided into several categories including DDL for data definition, DML for data manipulation, DRL for data retrieval, TCL for transactions, and DCL for data control. The document provides examples of using SQL commands to create a table, insert data into the table using value and address methods, select data with and without conditions, and filter selections using comparison operators, logical operators, and functions like BETWEEN, IN, and NULL.
Download as DOC, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
245 views
SQL PLSQL
SQL is a language for managing and manipulating databases. It is divided into several categories including DDL for data definition, DML for data manipulation, DRL for data retrieval, TCL for transactions, and DCL for data control. The document provides examples of using SQL commands to create a table, insert data into the table using value and address methods, select data with and without conditions, and filter selections using comparison operators, logical operators, and functions like BETWEEN, IN, and NULL.
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 205
INTRODUCTION
SQL is divided into the following
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)). Ta%le !eated5 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). 1 2 ow !eated5 SQL- inset into student values (1# ;sað# 133). 2 ow !eated5
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) 2 ow !eated5 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) 2 ow !eated5 !) 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 (value1, value2, value3 . Valuen). 2 '/0 SQL- inset into student (no# na$e) values (4# ;Ra$esh;). 2 ow !eated5 SQL- inset into student (no# na$e) values (@# ;Madhu;). 2 ow !eated5 d) INS'RTIN8 D(T( INTO SA'CIBI'D COLUMNS USIN8 (DDR'SS M'T:OD s7nta/0 inset into ,table_name)(col1, col2, col3 coln) 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 (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=) 2 ow !eated5 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=) 2 ow !eated5 S'L'CTIN8 D(T( S7nta/0 Sele!t E fo$ ,table_name-. "" hee E indi!ates all !olu$ns o 3 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 G ows sele!ted5 SQL- sele!t no# na$e# $a&s 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 G ows sele!ted5 SQL- sele!t no# na$e fo$ student. NO N(M' """ """"""" 2 Sudha 1 Sað 2 >agan 4 1 Naen 4 Ra$esh @ Madhu C 9isu D Rattu G ows sele!ted5
CONDITION(L S'L'CTIONS (ND OA'R(TORS 6e have two !lauses used in this 6hee Ode %7 USIN8 6:'R' s7nta/0 5 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 (ith$eti! opeatos "" highest pe!eden!e H# "# E# ? Co$paison opeatos I# JI# -# ,# -I# ,I# ,- %etween# not %etween in# not in null# not null li&e Logi!al opeatos (nd O "" lowest pe!eden!e not a) USIN8 I# -# ,# -I# ,I# JI# ,- '/0 SQL- sele!t E fo$ student whee no I 1. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 1 Naen @33
1 ows sele!ted5 SQL- sele!t E fo$ student whee no , 1. NO N(M' M(RFS """ """"""" """""""""" 2 Sudha 233 2 >agan 433 6 1 ows sele!ted5 SQL- sele!t E fo$ student whee no - 1. NO N(M' M(RFS """ """"""" """""""""" 4 Ra$esh @ Madhu C 9isu D Rattu @ ows sele!ted5 SQL- sele!t E fo$ student whee no ,I 1. NO N(M' M(RFS """ """"""" """""""""" 2 Sudha 233 1 Sað 133 2 >agan 433 1 Naen @33
@ ows sele!ted5 SQL- sele!t E fo$ student whee no -I 1. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 1 Naen @33 4 Ra$esh @ Madhu C 9isu D Rattu D ows sele!ted5 SQL- sele!t E fo$ student whee no JI 1. 7 NO N(M' M(RFS """ """"""" """""""""" 2 Sudha 233 2 >agan 433 4 Ra$esh @ Madhu C 9isu D Rattu D ows sele!ted5 SQL- sele!t E fo$ student whee no ,- 1. NO N(M' M(RFS """ """"""" """""""""" 2 Sudha 233 2 >agan 433 4 Ra$esh @ Madhu C 9isu D Rattu D ows sele!ted5 %) 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 I 1 and $a&s -I 133. NO N(M' M(RFS """ """"""" """""""" 1 Sað 133 1 Naen @33 8 1 ows sele!ted5 !) 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 I 1 o $a&s -I 133. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 2 >agan 433 1 Naen @33 4 ows sele!ted5 d) USIN8 )'T6''N This will gives the output %ased on the !olu$n and its lowe %ound# uppe%ound5 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 4 ows sele!ted5 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. 9 NO N(M' M(RFS """ """"""" """"""""" 2 Sudha 233 2 ow sele!ted5 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 """ """"""" """"""""" 2 Sudha 233 1 Sað 133 2 >agan 433 1 Naen @33 4 Ra$esh C ows sele!ted5 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 10 D Rattu 4 ows sele!ted5 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 D Rattu @ ows sele!ted5 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 @ ows sele!ted5 K) 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-. 11
'/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 2 ow sele!ted5 ii) This will give the ows whose na$e stat with LS;5 SQL- sele!t E fo$ student whee na$e li&e =SM=. NO N(M' M(RFS """ """"""" """"""""" 2 Sudha 233 1 Sað 133 1 ows sele!ted5 iii) This will give the ows whose na$e ends with Lh;5 SQL- sele!t E fo$ student whee na$e li&e =Mh=.
NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 4 Ra$esh 1 ows sele!ted5 i9) This will give the ows whose na$e;s se!ond lette stat with La;5 SQL- sele!t E fo$ student whee na$e li&e =NaM=. NO N(M' M(RFS 12 """ """"""" """""""" 1 Sað 133 2 >agan 433 1 Naen @33 4 Ra$esh @ Madhu D Rattu D ows sele!ted5
9) This will give the ows whose na$e;s thid lette stat with Ld;5 SQL- sele!t E fo$ student whee na$e li&e =NNdM=. NO N(M' M(RFS """ """"""" """"""""" 2 Sudha 233 @ Madhu 1 ows sele!ted5 9i) This will give the ows whose na$e;s se!ond lette stat with Lt; fo$ ending5 SQL- sele!t E fo$ student whee na$e li&e =MNtM=. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 D Rattu
1 ows sele!ted5 9ii) This will give the ows whose na$e;s thid lette stat with Le; fo$ ending5 SQL- sele!t E fo$ student whee na$e li&e =MeNNM=. NO N(M' M(RFS """ """"""" """"""""" 1 Sað 133 4 Ra$esh 13 1 ows sele!ted5 9iii) This will give the ows whose na$e !otains 1 a;s5 SQL- sele!t E fo$ student whee na$e li&e =MaM a M=. NO N(M' M(RFS """ """"""" """""""""" 2 >agan 433 2 ow sele!ted5 E *ou have to spe!if7 the pattens in like using undes!oe ( N )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 desc &e7wod afte the !olu$n5 '/0 SQL- sele!t E fo$ student ode %7 no. NO N(M' M(RFS """ """"""" """"""""" 2 Sudha 233 2 >agan 433 1 Sað 133 1 Naen @33 4 Ra$esh @ Madhu C 9isu D Rattu G ows sele!ted5 SQL- sele!t E fo$ student ode %7 no des!. NO N(M' M(RFS """ """"""" """"""""" 14 D Rattu C 9isu @ Madhu 4 Ra$esh 1 Sað 133 1 Naen @33 2 Sudha 233 2 >agan 433 G ows sele!ted5 USIN8 DML USIN8 UAD(T' This !an %e used to $odif7 the ta%le data5 S7nta/0 Update ,table_name- set ,col1- I value2# ,col2- I value1 whee ,condition-. '/0 SQL- update student set $a&s I C33. If 7ou ae not spe!if7ing an7 !ondition this will update entie ta%le5 SQL- update student set $a&s I C33 whee no I 1. SQL- update student set $a&s I C33# na$e I =9enu= whee no I 2. USIN8 D'L'T' This !an %e used to delete the ta%le data te$poail75 S7nta/0 Delete ,table_name- whee ,condition-. '/0 SQL- delete BROM student. If 7ou ae not spe!if7ing an7 !ondition this will delete entie ta%le5 SQL- delete BROM student whee no I 1. 15 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%. !) 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. 16 '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 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%Ke!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%Ke!t. S7nta/0 ena$e ,oldNtable_name- to ,new_table_name-. '/0 17 SQL- ena$e student to stud. 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&. E 6hile po!ess is going on# if suddenl7 powe goes then oa!le will oll%a!& the tansa!tion5 USIN8 S(9'AOINT 18 *ou !an use savepoints to oll%a!& potions of 7ou !uent set of tansa!tions5 S7nta/0 Savepoint ,savepoint_name-. '/0 SQL- savepoint s2. SQL- inset into student values(2# La;# 233). SQL- savepoint s1. SQL- inset into student values(1# L%;# 133). SQL- savepoint s4. SQL- inset into student values(4# L!;# 433). SQL- savepoint s@. SQL- inset into student values(@# Ld;# @33).
)efoe oll%a!& SQL- sele!t E fo$ student. NO N(M' M(RFS """ """"""" """""""""" 2 a 233 1 % 133 4 ! 433 @ d @33 @ ows sele!ted5
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 """ """"""" """""""""" 2 a 233 1 % 133 1 ows sele!ted5 19 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 8ant ,privilees- on ,ob!ect_name- to ,user_name- Owith gant optionP. '/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%Ke!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 ,privilees- on ,ob!ect_name- fo$ ,user_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 20 CR'(T' 6IT: S'L'CT 6e !an !eate a ta%le using e/isting ta%le Oalong with dataP5 S7nta/0 Ceate ta%le ,new_table_name- Ocol1, col2, col3 ... colnP 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 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 I 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 #orinal_col$ #alias_name$ %rom #tableNna$e-. '/0 SQL- sele!t no sno fo$ student. o SQL- sele!t no QsnoR fo$ student. 21 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 ,alias_name-5,col1-# ,alias_name-5,col2- S ,alias_name-5,coln- fo$ ,table_name- ,alias_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 22 Using (sele!t EBo$ student1) s1 On(s25noIs15no) 6hen $at!hed then Update set $a&s I 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# na$e# hno# !it75 SQL- Mege into student2 s2 Using (sele!t EBo$ student1) s1 On(s25noIs15no) 6hen $at!hed then Update set $a&s I 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 23 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 deptnoI23. "" This insets 4 ows !) 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 deptnoI23. "" 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 T 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 I LS(L'S; then Into student1 values(1#;%;#133) 24 6hen lo! I LN'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 Into student2 values(2#;a;#233) 6hen dna$e I LS; then Into student1 values(1#;%;#133) 6hen lo! I LN'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 I 13 then Into student2 values(2#;a;#233) 6hen dna$e I LR'S'(RC:; then Into student1 values(1#;%;#133) 6hen lo! I LN'6 *ORF; then Into student4 values(4#;!;#433) Sele!t Efo$ dept whee deptnoI13.
"" 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 I 43 then 25 Into student2 values(2#;a;#233) 6hen dna$e I LR; then Into student1 values(1#;%;#133) 6hen lo! I LN'6 *ORF; then Into student4 values(4#;!;#433) 'lse Into student values(@#;d;#@33) Sele!t Efo$ dept whee deptnoI13. "" This insets 2 e!od %e!ause the else !lause satisfied on!e 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 deptnoI23. "" 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 Bun!tions !an %e !ategoiUed as follows5 Single ow fun!tions 8oup fun!tions SIN8L' RO6 BUNCTIONS Single ow fun!tions !an %e !ategoiUed 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 26 Convesion fun!tions NUM'RIC BUNCTIONS (%s Sign SVt 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 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. 27 SI8N(C) SI8N("C) SI8N(3) SI8N(NULL) """""""""" """""""""" """""""""" """""""""""""" 2 "2 3 !) SQRT This will give the sVuae oot of the given value5 S7nta/0 sVt (value) "" hee value $ust %e positive5 '/0 SQL- sele!t sVt(@)# sVt(3)# sVt(null)# sVt(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, divisor) '/0 SQL- sele!t $od(W#@)# $od(2#C)# $od(null#null)# $od(3#3)# $od("W#@) fo$ dual. MOD(W#@) MOD(2#C) MOD(NULL#NULL) MOD(3#3) MOD("W#@) """""""""""" """""""""" """"""""""""""""""""" """"""""""" """"""""""""" 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 ! 28 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.
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. 29 '+A(2) '+A(1) '+A(3) '+A(NULL) '+A("1) """""""" """"""""" """""""" """"""""""""" """""""""" 15W2G1G2G4 W54GT3CD2 2 524C44C1G4 h) LN This is %ased on natual o %ase e logaith$5 S7nta/0 ln (value) "" hee value $ust %e geate than Ueo whi!h is positive onl75 '/0 SQL- sele!t ln(2)# ln(1)# ln(null) fo$ dual. LN(2) LN(1) LN(NULL) """"""" """"""" """""""""""" 3 5DT42@W2G2 Ln and '/p ae e!ipo!al to ea!h othe5 '+A (4) I 1353GCC4DT LN (1353GCC4DT) I 4 i) LO8 This is %ased on 23 %ased logaith$5 S7nta/0 log (23# value) "" hee value $ust %e geate than Ueo 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 543231TTTD 3 LN (value) I LO8 ('+A(2)# value) SQL- sele!t ln(4)# log(e/p(2)#4) fo$ dual. LN(4) LO8('+A(2)#4) """"""" """"""""""""""""" 253TGD211T 253TGD211T 30 K) C'IL This will podu!e a whole nu$%e that is geate than o eVual 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) """"""""" """"""""""" """""""""" """""""""""" """""""" """""""""""""" C D "C "C 3 &) BLOOR This will podu!e a whole nu$%e that is less than o eVual 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, precision) '/0 SQL- ound(214514@C#1)# ound(sele!t ound(214514@C)# 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, precision) '/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. 32 TRUNC(214514@C#"2) TRUNC(214514@C#"1) TRUNC(214514@C#"4) TRUNC(214514@C#"@) """""""""""""""""""""""" """""""""""""""""""""""" """"""""""""""""""""""" """""""""""""""""""""""" 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 33 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 Ueos then it will displa7 Ueo5 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 Ueos then it will displa7 Ueo5 If all the paa$etes ae nulls then it will displa7 nothing5 If an7 of the paa$etes is null it will displa7 nothing5 V) CO(L'SC' This will etun fist non"null value5 S7nta/0 !oales!e (value1, value2, value3 valuen) 34 '/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 ( L XX L Con!atenation opeato) (s!ii Ch Su%st Inst De!ode 8eatest Least Coales!e a) INITC(A This will !apitaliUe the initial lette of the sting5 S7nta/0 init!ap (strin) '/0 SQL- sele!t init!ap(=!o$pute=) fo$ dual. 35 INITC(A """"""""""" Co$pute %) UAA'R This will !onvet the sting into uppe!ase5 S7nta/0 uppe (strin) '/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 (strin) '/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 (strin) '/0 SQL- sele!t length(=!o$pute=) fo$ dual. L'N8T: """"""""""" G 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 (strin, lent' (, paddin_c'ar)) '/0 SQL- sele!t pad(=!o$pute=#2C#=E=)# pad(=!o$pute=#2C#=EY=) fo$ dual. 36 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 (strin, lent' (, 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 This will ti$ off unwanted !haa!tes fo$ the left end of sting5 S7nta/0 lti$ (strin (,unwanted_c'ars)) '/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 37 S7nta/0 ti$ (strin (, unwanted_c'ars)) '/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 This will ti$ off unwanted !haa!tes fo$ the %oth sides of sting5 S7nta/0 ti$ (unwanted_c'ars fo$ strin) '/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 K) TR(NSL(T' This will epla!e the set of !haa!tes# !haa!te %7 !haa!te5 38 S7nta/0 tanslate (strin, old_c'ars, new_c'ars) '/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 S7nta/0 epla!e (strin, old_c'ars (, new_c'ars)) '/0 SQL- sele!t epla!e(=india=#=in=#=/7=)# epla!e(Lindia;#;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/ (strin) '/0 SQL- sele!t E fo$ e$p whee sounde/(ena$e) I sounde/(=SMIT=). 'MANO 'N(M' >O) M8R :IR'D(T' S(L D'ATNO """""""" """""""" """"" """"" """""""""""" """"""""" """""""""" W4DT SMIT: CL'RF WT31 2W"D'C"G3 C33 13 $) CONC(T This will %e used to !o$%ine two stings onl75 S7nta/0 !on!at (strin1, strin2) '/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 39 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 (strin) '/0 SQL- sele!t as!ii(=a=)# as!ii(=apple=) fo$ dual. (SCII(=(=) (SCII(=(AAL'=) """""""""""" """""""""""""""""" TW TW o) C:R This will etun the !haa!te having the %ina7 eVuivalent 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(TW) fo$ dual. C:R """"" a p) SU)STR This will %e used to e/ta!t su%stings5 S7nta/0 su%st (strin, start_c'r_count (, no_o%_c'ars)) '/0 SQL- sele!t su%st(=!o$pute=#1)# su%st(=!o$pute=#1#C)# su%st(=!o$pute=#4#W) fo$ dual. SU)STR( SU)ST SU)STR """""""""" """"""" """""""" o$pute o$put $pute 40 If no_o%_c'ars paa$ete is negative then it will displa7 nothing5 If %oth paa$etes e/!ept strin ae null o Ueos then it will displa7 nothing5 If no_o%_c'ars paa$ete is geate than the length of the sting then it ignoes and !al!ulates %ased on the oginal sting length5 If start_c'r_count is negative then it will e/ta!t the su%sting fo$ ight end5 2 1 4 @ C D W G C O M A U T ' R "G "W "D "C "@ "4 "1 "2 V) INSTR This will allows 7ou fo sea!hing though a sting fo set of !haa!tes5 S7nta/0 inst (strin, searc'_str (, start_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 start_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 start_c'r_count and occurrence ae null# it will displa7 nothing5 ) D'COD' 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, . else). '/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$ 41 4C33 Mediu$ 4333 Mediu$ C333 :igh @333 Mediu$ C333 :igh 2G33 Mediu$ 2133 Mediu$ 1333 Mediu$ 1W33 Mediu$ 1133 Mediu$ 4133 Mediu$ 2@ ows sele!ted5 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 Ueos then de!ode will displa7 Ueo5 s) 8R'(T'ST This will give the geatest sting5 S7nta/0 geatest (strn1, strin2, strin3 strinn) '/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 42 t) L'(ST This will give the least sting5 S7nta/0 geatest (strn1, strin2, strin3 strinn) '/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 (strn1, strin2, strin3 strinn) '/0 SQL- sele!t !oales!e(=a=#=%=#=!=)# !oales!e(null#=a=#null#=%=) fo$ dual. CO(L'SC' CO(L'SC' """"""""""" """"""""""" a a D(T' BUNCTIONS S7sdate CuentNdate CuentNti$esta$p S7sti$esta$p Lo!alti$esta$p D%ti$eUone 43 Sessionti$eUone ToN!ha ToNdate (ddN$onths MonthsN%etween Ne/tNda7 LastNda7 '/ta!t 8eatest Least Round Tun! NewNti$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 nlsNdateNfo$at I LDD"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' """"""""""" 1@"D'C"3D %) CURR'NTND(T' This will etuns the !uent date in the session;s ti$eUone5 '/0 SQL- sele!t !uentNdate fo$ dual. CURR'NTND(T' """""""""""""""""" 1@"D'C"3D 44 !) CURR'NTNTIM'ST(MA This will etuns the !uent ti$esta$p with the a!tive ti$e Uone info$ation5 '/0 SQL- sele!t !uentNti$esta$p fo$ dual. CURR'NTNTIM'ST(MA """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 1@"D'C"3D 345@15@254G44DT (M H3C043 d) S*STIM'ST(MA This will etuns the s7ste$ date# in!luding fa!tional se!onds and ti$e Uone of the data%ase5 '/0 SQL- sele!t s7sti$esta$p fo$ dual. S*STIM'ST(MA """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 1@"D'C"3D 345@T5425G433TT (M H3C043 e) LOC(LTIM'ST(MA This will etuns lo!al ti$esta$p in the a!tive ti$e Uone info$ation# with no ti$e Uone info$ation shown5 '/0 SQL- sele!t lo!alti$esta$p fo$ dual. LOC(LTIM'ST(MA """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 1@"D'C"3D 345@@52G5C31GW@ (M f) D)TIM'ZON' This will etuns the !uent data%ase ti$e Uone in UTC fo$at5 (Coodinated Univesal Ti$e) '/0 SQL- sele!t d%ti$eUone fo$ dual. D)TIM'ZON' """"""""""""""" "3W033 g) S'SSIONTIM'ZON' This will etuns the value of the !uent session;s ti$e Uone5 '/0 SQL- sele!t sessionti$eUone fo$ dual. 45 S'SSIONTIM'ZON' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" H3C043
h) TONC:(R This will %e used to e/ta!t vaious data fo$ats5 The availa%le date fo$ats as follows5 S7nta/0 toN!ha (date# %ormat)
D(T' BORM(TS
D "" No of da7s in wee& DD "" No of da7s in $onth 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 Vuates 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 46 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 toN!ha(s7sdate#=dd $onth 7777 hh0$i0ss a$ d7=) fo$ dual. TONC:(R(S*SD(T'#=DD MONT: ****::0MI """""""""""""""""""""""""""""""""""""""""""""""""""" 1@ de!e$%e 133D 31034014 p$ sun SQL- sele!t toN!ha(s7sdate#=dd $onth 7ea=) fo$ dual. TONC:(R(S*SD(T'#=DDMONT:*'(R=) """"""""""""""""""""""""""""""""""""""""""""""""""""""" 1@ de!e$%e two thousand si/ SQL- sele!t toN!ha(s7sdate#=dd f$$onth 7ea=) fo$ dual. TONC:(R(S*SD(T'#=DD BMMONT: *'(R=) """"""""""""""""""""""""""""""""""""""""""""""""""""""" 1@ de!e$%e two thousand si/ SQL- sele!t toN!ha(s7sdate#=ddth DDT:=) fo$ dual. TONC:(R(S """""""""""" 1@th 1@ T: 47 SQL- sele!t toN!ha(s7sdate#=ddspth DDSAT:=) fo$ dual. TONC:(R(S*SD(T'#=DDSAT:DDSAT: """""""""""""""""""""""""""""""""""""""""" twent7"fouth T6'NT*"BOURT: SQL- sele!t toN!ha(s7sdate#=ddsp Ddsp DDSA =) fo$ dual. TONC:(R(S*SD(T'#=DDSADDSADDSA=) """""""""""""""""""""""""""""""""""""""""""""""" twent7"fou Twent7"Bou T6'NT*"BOUR i) TOND(T' This will %e used to !onvet the sting into data fo$at5 S7nta/0 toNdate (date) '/0 SQL- sele!t toN!ha(toNdate(=1@?de!?133D=#=dd?$on?7777=)# =dd E $onth E da7=) fo$ dual. TONC:(R(TOND(T'(=1@?D'C?13 """""""""""""""""""""""""" 1@ E de!e$%e E Sunda7 "" If 7ou ae not using toN!ha oa!le will displa7 output in default date fo$at5 K) (DDNMONT:S This will add the spe!ified $onths to the given date5 S7nta/0 addN$onths (date, no_o%_mont's) '/0 SQL- sele!t addN$onths(toNdate(=22"Kan"2TT3=#=dd"$on"7777=)# C) fo$ dual. (DDNMONT:S """""""""""""""" 22">UN"T3 SQL- sele!t addN$onths(toNdate(=22"Kan"2TT3=#=dd"$on"7777=)# "C) fo$ dual. 48 (DDNMONT: """"""""""""""" 22"(U8"GT If no_o%_mont's is Ueo then it will displa7 the sa$e date5 If no_o%_mont's is null then it will displa7 nothing5 &) MONT:SN)'T6''N This will give diffeen!e of $onths %etween two dates5 S7nta/0 $onthsN%etween (date1, date2) '/0 SQL- sele!t $onthsN%etween(toNdate(=22"aug"2TT3=#=dd"$on"7777=)# toNdate(=22"Kan" 2TT3=#=dd"$on"7777=)) fo$ dual. MONT:SN)'T6''N(TOND(T'(=22"(U8"2TT3=#=DD"MON"****=)#TOND(T'(=22">(N"2TT3=#=DD"MON"****=)) """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" W SQL- sele!t $onthsN%etween(toNdate(=22"Kan"2TT3=#=dd"$on"7777=)# toNdate(=22"aug" 2TT3=#=dd"$on"7777=)) fo$ dual. MONT:SN)'T6''N(TOND(T'(=22">(N"2TT3=#=DD"MON"****=)#TOND(T'(=22"(U8"2TT3=#=DD"MON"****=)) """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "W l) N'+TND(* This will podu!e ne/t da7 of the given da7 fo$ the spe!ified date5 S7nta/0 ne/tNda7 (date, day) '/0 SQL- sele!t ne/tNda7(toNdate(=1@"de!"133D=#=dd"$on"7777=)#=sun=) fo$ dual. N'+TND(*( """"""""""""" 42"D'C"3D "" If the da7 paa$ete is null then it will displa7 nothing5 $) L(STND(* 49 This will podu!e last da7 of the given date5 S7nta/0 lastNda7 (date) '/0 SQL- sele!t lastNda7(toNdate(=1@"de!"133D=#=dd"$on"7777=)#=sun=) fo$ dual. L(STND(*( """"""""""""" 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(toNdate(=22"Kan"T3=#=dd"$on"77=)#toNdate(=22"$a"T3=#=dd"$on" 77=)#toNdate(=22"ap"T3=#=dd"$on"77=)) fo$ dual. 8R'(T'ST( """"""""""""" 22"(AR"T3 p) L'(ST This will give the least date5 S7nta/0 least (date1, date2, date3 daten) '/0 SQL- sele!t least(toNdate(=22"Kan"T3=#=dd"$on"77=)#toNdate(=22"$a"T3=#=dd"$on" 77=)#toNdate(=22"ap"T3=#=dd"$on"77=)) fo$ dual. 50 L'(ST( """"""""""""" 22">(N"T3 V) ROUND Round will ounds the date to whi!h it was eVual 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 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 51 %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(TON ROUND(TON """""""""""""" """""""""""""" 1@"D'C"3D 42"D'C"3D SQL- sele!t toN!ha(ound(toNdate(=1@"de!"3D=#=dd"$on"77=))# =dd $on 7777 hh0$i0ss a$=) fo$ dual. TONC:(R(ROUND(TOND(T'(= """"""""""""""""""""""""""""""""" 1@ de! 133D 21033033 a$ ) TRUNC Tun! will !hops off the date to whi!h it was eVual to o less than the given date5 S7nta/0 tun! (date, (da7 X $onth X 7ea*) If the se!ond paa$ete was year then it alwa7s etuns the fist da7 of the !uent 7ea5 52 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!(toNdate(=1@"de!"3@=#=dd"$on"77=)#=7ea=)# tun!(toNdate(=22"$a" 3D=#=dd"$on"77=)#=7ea=) fo$ dual. TRUNC(TON TRUNC(TON """"""""""""" """""""""""""" 32">(N"3@ 32">(N"3D SQL- sele!t tun!(toNdate(=22"Kan"3@=#=dd"$on"77=)#=$onth=)# tun!(toNdate(=2G"Kan" 3@=#=dd"$on"77=)#=$onth=) fo$ dual. TRUNC(TON TRUNC(TON """"""""""""" """"""""""""" 32">(N"3@ 32">(N"3@
SQL- sele!t toN!ha(tun!(toNdate(=1@"de!"3D=#=dd"$on"77=))# =dd $on 7777 hh0$i0ss a$=) fo$ dual. TONC:(R(TRUNC(TOND(T'(= """"""""""""""""""""""""""""""""" 1@ de! 133D 21033033 a$ s) N'6NTIM' This will give the desied ti$eUone;s date and ti$e5 S7nta/0 newNti$e (date, current_time+one, desired_time+one) 53 (vaila%le ti$eUones 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 toN!ha(newNti$e(s7sdate#=g$t=#=7st=)#=dd $on 7777 hh0$i0ss a$=) fo$ dual. TONC:(R(N'6NTIM'(S*SD(T """"""""""""""""""""""""""""""""""" 1@ de! 133D 310C2013 p$ SQL- sele!t toN!ha(newNti$e(s7sdate#=g$t=#=est=)#=dd $on 7777 hh0$i0ss a$=) fo$ dual. TONC:(R(N'6NTIM'(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 SQL- sele!t !oales!e(=21"Kan"T3=#=24"Kan"TT=)# !oales!e(null#=21"Kan"T3=#=14"$a"TG=#null) fo$ dual. CO(L'SC'( CO(L'SC'( """"""""""""" """""""""""" 21"Kan"T3 21"Kan"T3 54 MISC'LL(N'OUS BUNCTIONS Uid Use 9siUe a) UID This will etuns the intege value !oesponding to the use !uentl7 logged in5 '/0 SQL- sele!t uid fo$ dual. UID """""""""" 42T %) 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 '/0 SQL- sele!t vsiUe(214)# vsiUe(=!o$pute=)# vsiUe(=21"Kan"T3=) fo$ dual. 9SIZ'(214) 9SIZ'(=COMAUT'R=) 9SIZ'(=21">(N"T3=) """"""""""""" """"""""""""""""""""""" """""""""""""""""""""" 4 G T 55 CON9'RSION BUNCTIONS )inNtoNnu$ Chatoowid Rowidto!ha ToNnu$%e ToN!ha ToNdate a) )INNTONNUM This will !onvet the %ina7 value to its nu$ei!al eVuivalent5 S7nta/0 %inNtoNnu$( binary_bits) '/0 SQL- sele!t %inNtoNnu$(2#2#3) fo$ dual. )INNTONNUM(2#2#3) """""""""""""""""""""""" D If all the %its ae Ueo then it podu!es Ueo5 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 This will !onvet an intenal oa!le ow identifie o owid to !haa!te sting5 d) TONNUM)'R This will !onvet a !ha o va!ha to nu$%e5 e) TONC:(R This will !onvet a nu$%e o date to !haa!te sting5 56 f) TOND(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) """""""""" 4GD33 %) (98 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) """"""""""""""" 1WCW52@1GD !) M(+ This will give the $a/i$u$ of the values of the spe!ified !olu$n5 S7nta/0 $a/ (column) '/0 57 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 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@ 58 CONSTR(INTS Constaints ae !ategoiUed as follows5 Do$ain integit7 !onstaints Not null Che!& 'ntit7 integit7 !onstaints UniVue 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 59 This is used to inset the values %ased on spe!ified !ondition5 6e !an add this !onstaint in all thee levels5 '/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) uniVue# na$e va!ha(23)# $a&s nu$%e(4)). SQL- !eate ta%le student(no nu$%e(1) !onstaint un uniVue# 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)# uniVue(no)). 60 SQL- !eate ta%le student(no nu$%e(1) # na$e va!ha(23)# $a&s nu$%e(4)# !onstaint un uniVue(no)). (LT'R L'9'L SQL- alte ta%le student add uniVue(no). SQL- alte ta%le student add !onstaint un uniVue(no). ARIM(R* F'* This is used to avoid dupli!ates and nulls5 This will wo& as !o$%ination of uniVue 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
(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 6e !an add this !onstaint in ta%le and alte levels onl75 '/0 61 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. SQL- alte ta%le e$p add !onstaint f& foeign &e7(deptno) efeen!es dept(deptno) on delete !as!ade. COMAOSIT' F'*S 62 ( !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$$ediate5 Defeed initiall7 defeed5 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 uniVue(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 uniVue(no) defeed initiall7 defeed). SQL- alte ta%le student add !onstaint un uniVue(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 64 'N()L' This will ena%le the !onstaint5 )efoe ena%le# the !onstaint will !he!& the e/isting data5 '/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 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 Llow; 6hen C333 then Lhigh; 'lse L$ediu$; 'nd !ase 65 Bo$ e$p. S(L C(S' """"" """""""" C33 low 1C33 $ediu$ 1333 $ediu$ 4C33 $ediu$ 4333 $ediu$ C333 high @333 $ediu$ C333 high 2G33 $ediu$ 2133 $ediu$ 1333 $ediu$ 1W33 $ediu$ 1133 $ediu$ 4133 $ediu$ 2@ ows sele!ted5 D'B(ULT ,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' 66 """""" """"""""" 2 a 22 % SQL- inset into student values(null# L!;). 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 '/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 67 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 I =%o$%a7= whee s5addess5hno I 444. 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 %o$%a7 D'L'T' 6IT: (DT T()L'S SQL- delete student s whee s5addess5hno I 222. SQL- sele!t no#na$e#s5addess5hno#s5addess5!it7 fo$ student s. 68 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%Ke!ts with the e/isting ta%le# o%Ke!t views !o$e into pi!tue5 *ou define the o%Ke!t and !eate a view whi!h elates this o%Ke!t to the e/isting ta%le nothing %ut ob!ect view5 O%Ke!t views ae used to elate the use defined o%Ke!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 SQL- !eate t7pe add as o%Ke!t(hno nu$%e(1)#!it7 va!ha(23)).? SQL- !eate t7pe stud as o%Ke!t(na$e va!ha(23)#addess add).? 4) Relate the o%Ke!ts to the student ta%le %7 !eating the o%Ke!t view SQL- !eate view studentNov(no#studNinfo) 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%Ke!t view 69 SQL- Inset into studentNov values(2#stud(Lsudha;#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%Ke!t(na$e va!ha(23)#$a&s nu$%e(4)# Me$%e fun!tion $a&sNf($a&s in nu$%e) etun nu$%e# Aag$a esti!tNefeen!es($a&sNf#wnds#nds#wnps#fnps)).? 1) Defining t7pe %od7 SQL- Ceate t7pe %od7 stud as Me$%e fun!tion $a&sNf($a&s in nu$%e) etun nu$%e is )egin Retun ($a&sH233). 'nd $a&sNf. '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(Lsudha;#233)). C) Using $ethod in sele!t SQL- Sele!t s5info5$a&sNf(s5info5$a&s) fo$ student s. "" :ee we ae using the pag$a esti!tNefeen!es to avoid the wites to the data%ase5 70 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%Ke!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#;Kagan;#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. "" 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 71
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$it 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%Ke!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 studentNte$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#;Kagan;#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 SQL- Inset into ta%le(sele!t addess fo$ student whee noI2) values(add(CCC#;!hennai;)). W) Update in nested ta%les SQL- Update ta%le(sele!t addess fo$ student whee noI1) s set s5!it7I;%o$%a7; whee s5hno I 111. G) Delete in nested ta%le 72 SQL- Delete ta%le(sele!t addess fo$ student whee noI4) s whee s5hnoI444. 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%$sNflash%a!&5ena%leNatNti$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%$sNflash%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 0I e/e! d%$sNflash%a!&5getNs7ste$N!hangeNnu$%e !) To see the SCN SQL- Aint s d) Then e/e!ute the following po!edues SQL- '/e! d%$sNflash%a!&5ena%leNatNs7ste$N!hangeNnu$%e(0s) SQL- '/e! d%$sNflash%a!&5disa%le 73 '+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 Vue7 the ta%le# oa!le eads the e/tenal ta%le and etuns the esults Kust 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%Ke!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- SVlplus s7ste$?$anage SQL- Ceate die!to7 saðNdi as L?9isd%?visd%?T5153?e/tenal;. SQL- 8ant all on die!to7 saðNdi to sað. SQL- Conn sað?sað SQL- Spool dept5lst SQL- Sele!t deptno XX L#; XX dna$e XX L#; XX lo! fo$ dept. SQL- Spool off CR'(TIN8 '+T'RN(L T()L' SQL- Ceate ta%le deptNe/t (deptno nu$%e(1)# Dna$e va!ha(2@)# Lo! va!ha(24)) OganiUation e/tenal ( t7pe oa!leNloade Default die!to7 saðNdi (!!ess paa$etes ( e!ods deli$ited %7 newline Bields te$inated %7 Q#R ( deptno nu$%e(1)# 74 Dna$e va!ha(2@)# Lo! va!ha(24))) Lo!ation (L?9isd%?visd%?T5153?dept5lst;)). S'L'CTIN8 D(T( BROM '+T'RN(L T()L' SQL- sele!t E fo$ deptNe/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 b) Constaints not possi%le )'N'BITS OB '+T'RN(L T()L'S a) Queies of e/tenal ta%les !o$plete ve7 Vui!&l7 even though a full ta%le s!an id eVuied with ea!h a!!ess %) *ou !an Koin 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%Ke!ts5 75 'a!h of the ow o%Ke!ts has an o%Ke!t id value assigned to it5 The o%Ke!t id assigned !an %e seen %7 using ef fun!tion5 D'R'B The deef fun!tion pefo$s opposite a!tion5 It ta&es a efeen!e value of o%Ke!t id and etuns the value of the ow o%Ke!ts5 9(LU' 'ven though the pi$a7 ta%le is o%Ke!t ta%le# still it displa7s the ows in geneal fo$at5 To displa7 the entie stu!tue of the o%Ke!t# this will %e used5 '/0 2) !eate vendotNadt t7pe SQL- Ceate t7pe vendoNadt as o%Ke!t (vendoN!ode nu$%e(1)# vendoNna$e va!ha(1)# vendoNaddess va!ha(23)).? 1) !eate o%Ke!t ta%les vendos and vendos2 SQL- Ceate ta%le vendos of vendoNadt. SQL- Ceate ta%le vendos2 of vendoNadt. 4) inset the data into o%Ke!t ta%les SQL- inset into vendos values(2# La;# Lh7d;). SQL- inset into vendos values(1# L%;# L%ang;). SQL- inset into vendos2 values(4# L!;# Ldelhi;). SQL- inset into vendos2 values(@# Ld;# L!hennai;). @) !eate anothe ta%le odes whi!h holds the vendoNadt t7pe also5 SQL- Ceate ta%le odes (odeNno nu$%e(1)# vendoNinfo ef vendoNadt). O SQL- Ceate ta%le odes (odeNno nu$%e(1)# vendoNinfo ef vendoNadt with owid).
C) inset the data into odes ta%le The vendoNinfo !olu$n in the following s7nta/es will stoe o%Ke!t id of an7 ta%le whi!h is efeen!ed %7 vendoNadt o%Ke!t ( %oth vendos and vendos2)5
SQL- inset into odes values(22#(sele!t ef(v) fo$ vendos v whee vendoN!ode I 2)). SQL- inset into odes values(21#(sele!t ef(v) fo$ vendos v whee vendoN!ode I 1)). SQL- inset into odes values(24#(sele!t ef(v2) fo$ vendos2 v2 whee vendoN!ode I 76 2)). SQL- inset into odes values(2@#(sele!t ef(v2) fo$ vendos2 v2 whee vendoN!ode I 2)). D) To see the o%Ke!t ids of vendo ta%le SQL- Sele!t ef(9) fo$ vendos v. W) If 7ou see the vendoNinfo of odes it will show onl7 the o%Ke!t ids not the values# to see the values SQL- Sele!t deef(o5vendoNinfo) fo$ odes o. G) 'ven though the vendos ta%le is o%Ke!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 vendoNadt# the odes ta%le will stoe the o%Ke!t ids of vendos onl7 %e!ause it is !onstained to that ta%le onl75 The vendoNinfo !olu$n in the following s7nta/es will stoe o%Ke!t ids of vendos onl75 SQL- Ceate ta%le odes (odeNno nu$%e(1)# vendoNinfo ef vendoNadt s!ope is vendos). O SQL- Ceate ta%le odes (odeNno nu$%e(1)# vendoNinfo ef vendoNadt !onstaint f& efeen!es vendos). O)>'CT 9I'6S 6IT: R'B'R'NC'S To i$ple$ent the o%Ke!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%Ke!ts and ef !onstains5 )ut 7ou !an a!hieve this with out dopping the ta%les and without losing the data %7 !eating o%Ke!t views with efeen!es5 '/0 a) Ceate the following ta%les 77 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). SQL- inset into student1(24#444#;%o$%a7;#2). !) Ceate the t7pe SQL- !eate o epla!e t7pe stud as o%Ke!t(no nu$%e(1)#na$e va!ha(1)#$a&s nu$%e(4)).? d) 8eneating OIDs SQL- Ceate o epla!e view student2Nov of stud with o%Ke!t identifie(o id) (no) as Sele!t E fo$ Student2. e) 8eneating efeen!es SQL- Ceate o epla!e view student1Nov as sele!t no#hno#!it7#$a&eNef(student2Nov#id) id fo$ Student1. d) Que7 the following SQL- sele!t Efo$ student2Nov. SQL- sele!t ef(s) fo$ student2Nov s. SQL- sele!t values(s) fo$ student2Nov. SQ- sele!t Efo$ student1Nov. SQL- sele!t deef(s5id) fo$ student1Nov 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 78 (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 (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%Ke!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 79 (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 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). K) '/!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ðNts. 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#W#G#T#23)#patition p4 values(22#21#24#2@#2C)# patition p@ values(2D#2W#2G#2T#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). 80 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 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. K) Moving a patition SQL- (lte ta%le student $ove patition p1 ta%lespa!e saðNts. :(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*SNA2 S*SNA1 S*SNA4 S*SNA@ S*SNAC %) 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#;!;). 81 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(s7sNp2). 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 pW. g) Tun!ate a patition SQL- (lte ta%le student tun!ate patition pW. h) '/!hanging a patition SQL- (lte ta%le student e/!hange patition s7sNp2 with ta%le student1. i) Moving a patition SQL- (lte ta%le student $ove patition s7sNp1 ta%lespa!e saðNts. 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*SNSU)A2 S*SNSU)A1 S*SNSU)A4 A1 \ S*SNSU)A@ S*SNSU)AC S*SNSU)AD 82 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(s7sNsu%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). 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). 83 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 '/0 SQL- sele!t deptno# su$(sal) fo$ e$p goup %7 deptno. D'ATNO SUM(S(L) """""""""" """""""""" 23 GWC3 13 23GWC 43 T@33 SQL- sele!t deptno#Ko%#su$(sal) fo$ e$p goup %7 deptno#Ko%. 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 2T33 13 M(N(8'R 1TWC 43 CL'RF TC3 84 43 M(N(8'R 1GC3 43 S(L'SM(N CD33 T ows sele!ted5 :(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#Ko%#su$(sal) tsal fo$ e$p goup %7 deptno#Ko% 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#Ko%#su$(sal) tsal fo$ e$p goup %7 deptno#Ko% having su$(sal) - 4333 ode %7 Ko%.
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 85 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 Ko% !atego7 along wih the total sala7 fot individual depat$ents and the total sala7 of all the depat$ents5 SQL- Sele!t deptno#Ko%#su$(sal) fo$ e$p goup %7 ollup(deptno#Ko%). D'ATNO >O) SUM(S(L) """""""""" """"""""" """""""""" 23 CL'RF 2433 23 M(N(8'R 1@C3 23 AR'SID'NT C333 23 GWC3 13 (N(L*ST D333 13 CL'RF 2T33 13 M(N(8'R 1TWC 13 23GWC 43 CL'RF TC3 43 M(N(8'R 1GC3 43 S(L'SM(N CD33 43 T@33 1T31C 24 ows sele!ted5 USIN8 8ROUAIN8 86 In the a%ove Vue7 it will give the total sala7 of the individual depat$ents %ut with a %lan& in the Ko% !olu$n and gives the total sala7 of all the depat$ents with %lan&s in deptno and Ko% !olu$ns5
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 Ko% !atego7# the total sala7 fo individual depat$ents# the total sala7 of all the depat$ents and the salaies in ea!h Ko% !atego75
SQL- sele!t de!ode(gouping(deptno)#2#;(ll Depts;#deptno)#de!ode(gouping(Ko%)#2#;(ll >o%s;#Ko%)#su$(sal) fo$ e$p goup %7 !u%e(deptno#Ko%). 87 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 GWC3 13 (N(L*ST D333 13 CL'RF 2T33 13 M(N(8'R 1TWC 13 (ll >o%s 23GWC 43 CL'RF TC3 43 M(N(8'R 1GC3 43 S(L'SM(N CD33 43 (ll >o%s T@33 (ll Depts (N(L*ST D333 (ll Depts CL'RF @2C3 (ll Depts M(N(8'R G1WC (ll Depts AR'SID'NT C333 (ll Depts S(L'SM(N CD33 (ll Depts (ll >o%s 1T31C 2G ows sele!ted5 S'T OA'R(TORS 88 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 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. 9I'6S ( view is a data%ase o%Ke!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 89 ( view ta&es the output of the Vue7 and teats it as a ta%le# theefoe a view !an %e thought of as a stoed Vue7 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 deptNv as sele!t Efo$ dept with ead onl7. SQL- Ceate view deptNv as sele!t deptno# su$(sal) tNsal fo$ e$p goup %7 deptno. 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 90 "" 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 Q view has eos R5 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 I 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 deptNv. S*NON*M (ND S'QU'NC' S*NON*M ( s7non7$ is a data%ase o%Ke!t# whi!h is used as an alias fo a ta%le# view o seVuen!e5 T*A'S Aivate Au%li! 91 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%Ke!t5 Aovides lo!ation tanspaen!7 fo e$ote o%Ke!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' ( seVuen!e is a data%ase o%Ke!t# whi!h !an geneate uniVue# seVuential intege values5 It !an %e used to auto$ati!all7 geneate pi$a7 &e7 o uniVue &e7 values5 ( seVuen!e !an %e eithe in an as!ending o des!ending ode5 S7nta/0 Ceate seVuen!e ,se-_name- Oin!e$ent %t Ceate ta%le vendos of vendoNadt.7 nP Ostat with nP O$a/value nP O$invalue nP O!7!le?no!7!leP O!a!he?no!a!heP. )7 defalult the seVuen!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 seVuen!e nu$%es and etains the$ in $e$o7 fo faste a!!ess5 '/0 SQL- !eate seVuen!e s. SQL- !eate seVuen!e s in!e$ent %7 23 stat with 233 $invalue 233 $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# Lsað). Initiall7 !uval is not defined and ne/tval is stating value5 (fte that ne/tval and !uval ae alwa7s eVual5 92 CR'(TIN8 (LA:("NUM'RIC S'QU'NC'
SQL- !eate seVuen!e s stat with 22214@. SQL- Inset into student values (s5ne/tval XX tanslate (s5ne/tval#;214@CDWGT3;#;a%!defghiK;)). (LT'RIN8 S'QU'NC' 6e !an alte the seVuen!e to pefo$ the following5 Set o eli$inate $inalue of $a/value5 Change the in!e$ent value5 Change the nu$%e of !a!hed seVuen!e nu$%es5 '/0 SQL- alte seVuen!e s $invalue C. SQL- alte seVuen!e s in!e$ent %7 1. SQL- alte seVuen!e s !a!he 23. DROAAIN8 S'QU'NC' SQL- dop seVuen!e s. >OINS The pupose of a Koin is to !o$%ine the data a!oss ta%les5 ( Koin is a!tuall7 pefo$ed %7 the whee !lause whi!h !o$%ines the spe!ified ows of ta%les5 If a Koin involves in $oe than two ta%les then oa!le Koins fist two ta%les %ased on the Koins !ondition and then !o$paes the esult with the ne/t ta%le and so on5 T*A'S 'Vui Koin Non"eVui Koin Self Koin Natual Koin Coss Koin Oute Koin Left oute 93 Right oute Bull oute Inne Koin 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 Kagan $anage 222 23 @@@ $adhu enginee 111 @3 'QUI >OIN ( Koin whi!h !ontains an LI; opeato in the Koins !ondition5 '/0 SQL- sele!t e$pno#ena$e#Ko%#dna$e#lo! fo$ e$p e#dept d whee e5deptnoId5deptno. 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Kagan $anage $&t h7d 111 sudha !le& fin %ang USIN8 CL(US' 94 SQL- sele!t e$pno#ena$e#Ko% #dna$e#lo! fo$ e$p e Koin dept d using(deptno). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Kagan $anage $&t h7d 111 sudha !le& fin %ang ON CL(US' SQL- sele!t e$pno#ena$e#Ko%#dna$e#lo! fo$ e$p e Koin dept d on(e5deptnoId5deptno). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Kagan $anage $&t h7d 111 sudha !le& fin %ang NON"'QUI >OIN ( Koin whi!h !ontains an opeato othe than LI; in the Koins !ondition5 '/0 SQL- sele!t e$pno#ena$e#Ko%#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 >oining the ta%le itself is !alled self Koin5 '/0 SQL- sele!t e25e$pno#e15ena$e#e25Ko%#e15deptno fo$ e$p e2#e$p e1 whee e25e$pnoIe15$g. 95 'MANO 'N(M' >O) D'ATNO """""""""" """""""""" """""""""" """""""""" 222 Kagan anal7st 23 111 $adhu !le& @3 444 sudha $anage 13 @@@ sað enginee 23 N(TUR(L >OIN Natual Koin !o$paes all the !o$$on !olu$ns5 '/0 SQL- sele!t e$pno#ena$e#Ko%#dna$e#lo! fo$ e$p natual Koin dept. 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Kagan $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#Ko%#dna$e#lo! fo$ e$p !oss Koin dept. 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 111 sudha !le& $&t h7d 444 Kagan $anage $&t h7d @@@ $adhu enginee $&t h7d 222 sað anal7st fin %ang 111 sudha !le& fin %ang 444 Kagan $anage fin %ang @@@ $adhu enginee fin %ang 222 sað anal7st h %o$%a7 111 sudha !le& h %o$%a7 96 444 Kagan $anage h %o$%a7 @@@ $adhu enginee h %o$%a7 21 ows sele!ted5 OUT'R >OIN Oute Koin 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#Ko%#dna$e#lo! fo$ e$p e left oute Koin dept d on(e5deptnoId5deptno). O SQL- sele!t e$pno#ena$e#Ko%#dna$e#lo! fo$ e$p e#dept d whee e5deptnoId5deptno(H).
'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Kagan $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#Ko%#dna$e#lo! fo$ e$p e ight oute Koin dept d on(e5deptnoId5deptno). O SQL- sele!t e$pno#ena$e#Ko%#dna$e#lo! fo$ e$p e#dept d whee e5deptno(H) I d5deptno. 97 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Kagan $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#Ko%#dna$e#lo! fo$ e$p e full oute Koin dept d on(e5deptnoId5deptno). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 444 Kagan $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#Ko%#dna$e#lo! fo$ e$p inne Koin dept using(deptno). 'MANO 'N(M' >O) DN(M' LOC """""""""" """""""""" """""""""" """""""""" """""""""" 222 sað anal7st $&t h7d 444 Kagan $anage $&t h7d 111 sudha !le& fin %ang 98 SU)QU'RI'S (ND '+ISTS SU)QU'RI'S Nesting of Vueies# one within the othe is te$ed as a su%Vue75 ( state$ent !ontaining a su%Vue7 is !alled a paent Vue75 Su%Vueies ae used to etieve data fo$ ta%les that depend on the values in the ta%le itself5 T*A'S Single ow su%Vueies Multi ow su%Vueies Multiple su%Vueies Coelated su%Vueies SIN8L' RO6 SU)QU'RI'S In single ow su%Vue7# it will etun one value5 '/0 SQL- sele!t E fo$ e$p whee sal - (sele!t sal fo$ e$p whee e$pno I WCDD). 'MANO 'N(M' >O) M8R :IR'D(T' S(L COMM D'ATNO """""""""" """""""""" """"""""" """""""""" """""""""""" """"""" """""""""" """""""""" WWGG SCOTT (N(L*ST WCDD 2T"(AR"GW 4333 13 WG4T FIN8 AR'SID'NT 2W"NO9"G2 C333 23 WT31 BORD (N(L*ST WCDD 34"D'C"G2 4333 13 99 MULTI RO6 SU)QU'RI'S In $ulti ow su%Vue7# 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%Vue75 '/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 """""""""" """""""""" """"""""" """""""""" """"""""""" """""""" """""""""" """""""""" WCDD >ON'S M(N(8'R WG4T 31"(AR"G2 1TWC 13 WWGG SCOTT (N(L*ST WCDD 2T"(AR"GW 4333 13 WG4T FIN8 AR'SID'NT 2W"NO9"G2 C333 23 WT31 BORD (N(L*ST WCDD 34"D'C"G2 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 """""""""" """""""""" """"""""" """""""""" """"""""""""" """""" """""""""" """""""""" WG4T FIN8 AR'SID'NT 2W"NO9"G2 C333 23 MULTIAL' SU)QU'RI'S Thee is no li$it on the nu$%e of su%Vueies in!luded in a whee !lause5 It allows nesting of a Vue7 within a su%Vue75 '/0 SQL- sele!t E fo$ e$p whee sal I (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 """""""""" """""""""" """"""""" """""""""" """""""""""" """"""" """""""""" """""""""" WWGG SCOTT (N(L*ST WCDD 2T"(AR"GW 4333 13 WT31 BORD (N(L*ST WCDD 34"D'C"G2 4333 13 CORR'L(T'D SU)QU'RI'S 100 ( su%Vue7 is evaluated on!e fo the entie paent state$ent whee as a !oelated su%Vue7 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 ,I (sele!t !ount(ena$e) fo$ e$p whee e5deptno I deptno). D'ATNO """""""""" 13 43 '+ISTS '/ists fun!tion is a test fo e/isten!e5 This is a logi!al test fo the etun of ows fo$ a Vue75 '/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 Vue7 !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 Vue7 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
D'ATNO 'N(M' """""""""" """""""""" 13 (D(MS 101 13 BORD 13 >ON'S 13 SCOTT 13 SMIT: 43 (LL'N 43 )L(F' 43 >(M'S 43 M(RTIN 43 TURN'R 43 6(RD 22 ows sele!ted5 NOT '+ISTS SQL- sele!t deptno#ena$e fo$ e$p e2 whee not e/ists (sele!t E fo$ e$p e1 whee e25deptnoIe15deptno goup %7 e15deptno having !ount(e15ena$e) - @) ode %7 deptno#ena$e. D'ATNO 'N(M' """"""""" """""""""" 23 CL(RF 23 FIN8 23 MILL'R 102 6(LFUA TR''S (ND INLIN' 9I'6 6(LFUA TR''S Using hiea!hi!al Vueies# 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 =II-= XX pio ena$e# level fo$ e$p stat with ena$e I =FIN8= !onne!t %7 pio e$pnoI$g.
'N(M'XX=II-=XXARIOR'N(M L'9'L """""""""""""""""""""""""""""""""""" """""""" FIN8II- 2 >ON'SII-FIN8 1 SCOTTII->ON'S 4 (D(MSII-SCOTT @ BORDII->ON'S 4 SMIT:II-BORD @ )L(F'II-FIN8 1 (LL'NII-)L(F' 4 6(RDII-)L(F' 4 M(RTINII-)L(F' 4 TURN'RII-)L(F' 4 >(M'SII-)L(F' 4 CL(RFII-FIN8 1 MILL'RII-CL(RF 4 2@ ows sele!ted5 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 103 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: G33 2 >(M'S TC3 1 (D(MS 2233 4 6(RD 21C3 @ M(RTIN 21C3 C MILL'R 2433 D TURN'R 2C33 W (LL'N 2D33 G CL(RF 1@C3 T )L(F' 1GC3 23 >ON'S 1TWC 22 SCOTT 4333 21 BORD 4333 24 FIN8 C333 2@ 2@ ows sele!ted5 LOCFS 104 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!t55o 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!& Shae update lo!& '/!lusive lo!& S:(R' LOCF ( shae lo!& lo!&s the ta%le allowing othe uses to onl7 Vue7 %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 Vue7# 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. 105 '+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 Vue75 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 ( deadlo!& o!!us when two uses have a lo!& ea!h on sepaate o%Ke!t# and the7 want to a!Vuie a lo!& on the ea!h othe;s o%Ke!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%Ke!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%Ke!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 eVualit75 106 T*A'S UniVue inde/ Non"uniVue inde/ )tee inde/ )it$ap inde/ Co$posite inde/ Revese &e7 inde/ Bun!tion"%ased inde/ Do$ain inde/ O%Ke!t inde/ Cluste inde/ Te/t inde/ Inde/ oganiUed ta%le Aatition inde/ Lo!al inde/ Lo!al pefi/ed Lo!al non"pefi/ed 8lo%al inde/ 8lo%al pefi/ed 8lo%al non"pefi/ed UNIQU' IND'+ UniVue inde/es guaantee that no two ows of a ta%le have dupli!ate values in the !olu$ns that define the inde/5 UniVue inde/ is auto$ati!all7 !eated when pi$a7 &e7 o uniVue !onstaint is !eated5 '/0 SQL- !eate uniVue inde/ studNind on student(sno). NON"UNIQU' IND'+ Non"UniVue inde/es do not i$pose the a%ove esti!tion on the !olu$n values5 '/0 SQL- !eate inde/ studNind on student(sno). 107 )TR'' 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 Vui!& 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/ studNind 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/ studNind on student(se/). COMAOSIT' IND'+ ( !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 adKa!ent !olu$ns of the ta%le5 '/0 SQL- !eate %it$ap inde/ studNind 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 Su!h an aange$ent !an help avoid pefo$an!e degadations in inde/es5 '/0 SQL- !eate inde/ studNind on student(sno# evese). 6e !an e%uild a evese &e7 inde/ into no$al inde/ using the noevese &e7wod5 '/0 SQL- alte inde/ studNind 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 108 SQL- !eate inde/ studNind on student(uppe(sna$e)). IND'+"OR8(NIZ'D T()L' (n inde/"oganiUed ta%le &eeps its data soted a!!oding to the pi$a7 &e7 !olu$n values fo the ta%le5 Inde/"oganiUed ta%les stoe thei data as if the entie ta%le was stoed in an inde/5 (n inde/"oganiUed 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) oganiUation inde/.
109 IMA QU'RI'S 2) To find the nth ow of a ta%le SQL- Sele!t Efo$ e$p whee owid I (sele!t $a/(owid) fo$ e$p whee ownu$ ,I @). O SQL- Sele!t Efo$ e$p whee ownu$ ,I @ $inus sele!t Efo$ e$p whee ownu$ ,I 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# Ko%# hiedate# !o$$# deptno# sal). O SQL- Sele!t e$pno#ena$e#sal#Ko%#hiedate#!o$$ # !ount(E) fo$ e$p goup %7 e$pno#ena$e#sal#Ko%#hiedate#!o$$ having !ount(E) -I2.
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#Ko%#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) -I 2. 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). 110 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). W) :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. T) To eset the ti$e to the %eginning of the da7 SQL- Sele!t toN!ha(tun!(s7sdate)#;dd"$on"7777 hh0$i0ss a$;) fo$ dual. 23) 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 owu$ ,I C).
111 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 Opti$iUed !o$pile5 To !hange the opti$iUe settings fo the entie data%ase# set the data%ase paa$ete ALSQLNOATIMIZ'NL'9'L5 9alid settings ae as follows 3 " No opti$iUation 2 " Modeate opti$iUation 1 " (ggessive opti$iUation These settings ae also $odifia%le fo the !uent session5 SQL- alte session set plsVlNopti$UeNlevelI1. Oa!le etains opti$iUe 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 plsVlNopti$iUeNlevelI2. SQL- (lte po!edue po! !o$pile euse settings. Co$pile"ti$e wanings5 112 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'eckin5 To ena%le these wanings fo the entie data%ase# set the data%ase paa$ete ALSQLN6(RNIN8S5 These settings ae also $odifia%le fo the !uent session5 SQL- alte session set plsVlNwanings I Lena%le0all;. The a%ove !an %e a!hieved using the %uilt"in pa!&age D)MSN6(RNIN85 Conditional !o$pilation5 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 Suppot fo non"seVuential !olle!tions in BOR(LL5 I$poved datat7pe suppot5 )a!&ta!e an e/!eption to its line nu$%e5 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)MSNUTILIT*5BORM(TN'RRORN)(CFTR(C' fun!tion to o%tain that sta!& and $anipulate it poga$$ati!all7 within 7ou poga$5 Set opeatos fo nested ta%les5 Suppot fo egula e/pessions5 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'+ANLIF' R'8'+ANINSTR R'8'+ANSU)STR R'8'+ANR'AL(C' Aoga$$e"defined Vuoting $e!hanis$5 Stating with oa!le data%ase 23g elease 2# 7ou !an define 7ou own Vuoting $e!hanis$ fo sting liteals in %oth SQL and AL?SQL5 113 Use the !haa!tes V;(V followed %7 a single Vuote) to note the poga$$e"defined delie$ete fo 7ou sting liteal5 '/0 D'CL(R' v va!ha(23) 0I =!o$pute=. )'8IN d%$sNoutput5putNline(V=Ev I E= XX v). d%$sNoutput5putNline(V=]v I ]= XX v). 'ND. Output0 v I !o$pute v I !o$pute Man7 new %uilt"in pa!&ages5 D)MSNSC:'DUL'R Repesents a $aKo update to D)MSN>O)5 D)MSNSC:'DUL'R povides $u!h i$poved fun!tionalit7 fo s!heduling and e/e!uting Ko%s defined via stoed po!edues5 D)MSNCR*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%aliUation suppot fo en!7pting data a!oss diffeent !haa!tesets5 D)MSNMONITOR Aovides an (AI to !ontol additional ta!ing and statisti!s gatheing of sessions5 D)MSN6(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' Oa!le has defined in this spe!ial pa!&age5 Oa!le defines Vuite 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 seVuentiall7 o nested5 114 )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%$sNoutput5putNline(LM7 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 '/0 ,,$7N%loo!&-- )'8IN D%$sNoutput5putNline(LM7 fist poga$;)0 'ND. 115 SU)ARO8R(MS Su%poga$s ae po!edues and fun!tions5 The7 !an %e stoed in the data%ase as stand"alone o%Ke!ts# as pat of pa!&age o as $ethods of an o%Ke!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%Ke!ts# su!h as vaia%les# !usos# t7pes and su%poga$s5 Identifies !onsists of a lette# optionall7 followed %7 an7 seVuen!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 Vuotation $a&s5 '/0 D'CL(R' ^a^ nu$%e 0I C. ^(^ nu$%e 0I D. )'8IN d%$sNoutput5putNline(=a I = XX a). d%$sNoutput5putNline(=( I = XX (). 'ND. Output0 a I D ( I D COMM'NTS 116 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%$sNoutput5putNline(Lhello;). "" 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%$sNoutput5putNline(Lhello;). ?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 0I C. ! nu$%e default D. CONST(NT D'CL'R(TIONS 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 0I C. ! !onstant nu$%e default D. 117 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 null0I 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 MT*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 dept5deptnoMt7pe. Su%t7pe tNnu$%e is nu$%e. a tNnu$%e. Su%t7pe tNsno is student5snoMt7pe. 9Nsno tNsno. R'CORD (NC:ORIN8 Use the MRO6T*A' atti%ute to define 7ou e!od stu!tue %ased on a ta%le5 '/0 D'CL(R' 9Ndept deptMowt7pe. )'N'BITS OB (NC:OR'D D'CL(R(TIONS S7n!honiUation with data%ase !olu$ns5 No$aliUation of lo!al vaia%les5 ARO8R(MM'R"D'BIN'D T*A'S 118 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 %ina7Nintege ange 25512@W@G4D@W. In the a%ove de!laation a vaia%le that is de!laed as positive !an stoe onl7 ingege geate than Ueo even though %ina7Nintege anges fo$ "12@W@G4D@W55H12@W@G4D@W5 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. Su%t7pe st is va!ha(233). st2 st. 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 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 119 D'CL(R' a va!ha(23). )'8IN sele!t deptno into a fo$ dept whee dna$eI=(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 Vualif7 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 % )'8IN """"" 'ND. """""" 'ND. '/10 D'CL(R' a nu$%e. % nu$%e. )'8IN "" a # % availa%le hee 120 D'CL(R' % !ha(23). )'8IN "" a and !ha t7pe % is availa%le hee 'ND. """"" 'ND. '/40 ,,$7N%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 ,,$7N%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 Case with no else La%eled !ase Sea!hed !ase Si$ple loop 6hile loop Bo loop 8oto and La%els 121 IB"T:'N"'LS' S7nta/0 If ,condition1- then "e-uence o% statements. 'lsif ,condition1- then "e-uence o% statements. SS 'lse "e-uence o% statements. 'nd if. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e I =(CCOUNTIN8=. if dno I 23 then d%$sNoutput5putNline(=Lo!ation is N'6 *ORF=). elsif dno I 13 then d%$sNoutput5putNline(=Lo!ation is D(LL(S=). elsif dno I 43 then d%$sNoutput5putNline(=Lo!ation is C:IC(8O=). else d%$sNoutput5putNline(=Lo!ation is )OSTON=). end if. 'ND. Output0 Lo!ation is N'6 *ORF C(S' S7nta/0 Case test/variable 6hen value1 then se-uence o% statements. 6hen value2 then se-uence o% statements. SS 122 6hen valuen then se-uence o% statements. 'lse se-uence o% statements. 'nd !ase. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e I =(CCOUNTIN8=. !ase dno when 23 then d%$sNoutput5putNline(=Lo!ation is N'6 *ORF=). when 13 then d%$sNoutput5putNline(=Lo!ation is D(LL(S=). when 43 then d%$sNoutput5putNline(=Lo!ation is C:IC(8O=). else d%$sNoutput5putNline(=Lo!ation is )OSTON=). end !ase. 'ND. Output0 Lo!ation is N'6 *ORF C(S' 6IT:OUT 'LS' S7nta/0 Case test/variable 6hen value1 then se-uence o% statements. 6hen value2 then se-uence o% statements. SS 6hen valuen then se-uence o% statements. 'nd !ase. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e I =(CCOUNTIN8=. !ase dno when 23 then 123 d%$sNoutput5putNline(=Lo!ation is N'6 *ORF=). when 13 then d%$sNoutput5putNline(=Lo!ation is D(LL(S=). when 43 then d%$sNoutput5putNline(=Lo!ation is C:IC(8O=). when @3 then d%$sNoutput5putNline(=Lo!ation is )OSTON=). end !ase. 'ND. Output0 Lo!ation is N'6 *ORF L()'L'D C(S' S7nta/0 ,,label-- Case test/variable 6hen value1 then se-uence o% statements. 6hen value2 then se-uence o% statements. SS 6hen valuen then se-uence o% statements. 'nd !ase. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e I =(CCOUNTIN8=. ,,$7N!ase-- !ase dno when 23 then d%$sNoutput5putNline(=Lo!ation is N'6 *ORF=). when 13 then d%$sNoutput5putNline(=Lo!ation is D(LL(S=). when 43 then d%$sNoutput5putNline(=Lo!ation is C:IC(8O=). when @3 then d%$sNoutput5putNline(=Lo!ation is )OSTON=). 124 end !ase $7N!ase. 'ND. Output0 Lo!ation is N'6 *ORF S'(RC:'D C(S' S7nta/0 Case 6hen ,condition1- then se-uence o% statements. 6hen ,condition2- then se-uence o% statements. SS 6hen ,conditionn- then se-uence o% statements. 'nd !ase. '/0 D'CL(R' dno nu$%e(1). )'8IN sele!t deptno into dno fo$ dept whee dna$e I =(CCOUNTIN8=. !ase dno when dno I 23 then d%$sNoutput5putNline(=Lo!ation is N'6 *ORF=). when dno I 13 then d%$sNoutput5putNline(=Lo!ation is D(LL(S=). when dno I 43 then d%$sNoutput5putNline(=Lo!ation is C:IC(8O=). when dno I @3 then d%$sNoutput5putNline(=Lo!ation is )OSTON=). end !ase. 'ND. Output0 Lo!ation is N'6 *ORF SIMAL' LOOA S7nta/0 125 Loop "e-uence o% statements. '/it when ,condition-. 'nd loop. In the s7nta/ e/it when ,condition- is eVuivalent to If ,condition- then '/it. 'nd if. '/0 D'CL(R' i nu$%e 0I 2. )'8IN loop d%$sNoutput5putNline(=i I = XX i). i 0I i H 2. e/it when i - C. end loop. 'ND. Output0 i I 2 i I 1 i I 4 i I @ i I C 6:IL' LOOA S7nta/0 6hile ,!ondition- loop "e-uence o% statements. 'nd loop. '/0 D'CL(R' i nu$%e 0I 2. )'8IN 6hile i ,I C loop 126 d%$sNoutput5putNline(=i I = XX i). i 0I i H 2. end loop. 'ND. Output0 i I 2 i I 1 i I 4 i I @ i I C BOR LOOA S7nta/0 Bo ,loop_counter_variable- in low_bound55'i'_bound loop "e-uence o% statements. 'nd loop. '/20 )'8IN Bo i in 255C loop d%$sNoutput5putNline(=i I = XX i). end loop. 'ND. Output0 i I 2 i I 1 i I 4 i I @ i I C '/10 )'8IN Bo i in evese 255C loop d%$sNoutput5putNline(=i I = XX i). end loop. 'ND. 127 Output0 i I C i I @ i I 4 i I 1 i I 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 Vui!&l7 $ove to the end of $7 poga$ if the state of $7 data indi!ates that no futhe po!essing is eVuied5 )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 eVuied thee5 'ven though NULL deos nothing# it is still an e/e!uta%le state$ent5 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 128 '/0 )'8IN Bo i in 255C loop d%$sNoutput5putNline(=i I = XX i). if i I @ then goto e/itNloop. end if. end loop. ,,e/itNloop-- Null. 'ND. Output0 i I 2 i I 1 i I 4 i I @ 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 AR8(M( instu!tionNtoN!o$pile5 AL?SQL offes seveal pag$as0 (UTONOMOUSNTR(NS(CTION '+C'ATIONNINIT 129 R'STRICTNR'B'R'NC'S S'RI(LL*NR'US()L' SU)ARO8R(MS In paa$ete will a!t as pl?sVl !onstant5 130 Out paa$ete will a!t as unintialiUed vaia%le5 In out paa$ete will a!t as initialiUed vaia%le5 In paa$etes %7 default !all %7 efeen!e whee as out and in out !all %7 value5 6e !an !o$%ine positional and na$e notation %ut positional notation !an not %e followed %7 the na$e notation5 6e !an not use L!all; without paa$etes5 6e !an not use !all with out and in out paa$etes5 Out and In Out paa$etes !an not have default values5 6e !an not use Le/e!; with out o in out paa$etes5 Default Aaa$etes will not allow in the %eginning and $iddle5 '/0 po!edue p(a in nu$%e default C# % in nu$%e default D# ! in nu$%e default W) \ valild po!edue p(a in nu$%e# % in nu$%e default D# ! in nu$%e default W) \ valild po!edue p(a in nu$%e# % in nu$%e# ! in nu$%e default W) \ 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 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 (p5sal)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 The !op7ing fo$ fo$al to a!tual !an %e esti!ted %7 issuing no!op7 Vualifie5 Su%poga$s !an %e lo!al5 6hen a stoed su%poga$ is !eated# it is stoed in the data di!tiona75 The su%poga$ is stoed in !o$pile fo$ whi!h is &nown as p"!ode 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 pl?sVl engine5 6hen the su%poga$ is !alled# the p"!ode is ead fo$ the dis&# if ne!essa7# and e/e!uted5 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 Lo!al su%poga$s $ust %e de!laed in the de!laative se!tion of pl?sVl %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. 131 (n7 lo!al su%poga$ $ust %e de!laed at the end of the de!laative se!tion5 '/0 CR'(T' OR R'AL(C' AROC'DUR' S(MAL'(a in nu$%e#% out nu$%e#! in out nu$%e) is )'8IN d%$sNoutput5putNline(=(fte !all=). d%$sNoutput5putNline(=a I = XX a XX= % I = XX % XX = ! I = XX !). % 0I 23. ! 0I 13. d%$sNoutput5putNline(=(fte assign$ent=). d%$sNoutput5putNline(=a I = XX a XX= % I = XX % XX = ! I = XX !). 'ND S(MAL'. D'CL(R' v2 nu$%e 0I @. v1 nu$%e 0I C. v4 nu$%e 0I D. )'8IN d%$sNoutput5putNline(=)efoe !all=). d%$sNoutput5putNline(=v2 I = XX v2 XX = v1 I = XX v1 XX = v4 I = XX v4). sa$ple(v2#v1#v4). d%$sNoutput5putNline(=(fte !o$pletion of !all=). d%$sNoutput5putNline(=v2 I = XX v2 XX = v1 I = XX v1 XX = v4 I = XX v4). 'ND. Output0 )efoe !all v2 I @ v1 I C v4 I D (fte !all a I @ % I ! I D (fte assign$ent a I @ % I 23 ! I 13 (fte !o$pletion of !all v2 I @ v1 I 23 v4 I 13 C(LL )* R'B'R'NC' (ND C(LL )* 9(LU' 6hen paa$ete passed %7 efeen!e# a pointe to the a!tual paa$ete is passed to the 132 !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 R'STRICTIONS ON BORM(L A(R(M'T'RS )7 de!laing with spe!ified siUe in a!tual paa$etes5 )7 de!laing fo$al paa$etes with Mt7pe spe!ifie5 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%Ke!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%Ke!t(a nu$%e).? SQL- !eate o epla!e t7pe t2 as o%Ke!t(a nu$%e).? D'CL(R' i t2 0I t2(C). K t1 0I t1(C). AROC'DUR' A($ t2) IS )'8IN d%$sNoutput5putNline(=a I = XX $5a). 'ND A. AROC'DUR' A(n t1) IS )'8IN d%$sNoutput5putNline(=% I = XX n5%). 'ND A. AROC'DUR' ARODUCT(a nu$%e#% nu$%e) IS )'8IN d%$sNoutput5putNline(=Aodu!t of a#% I = XX a E %). 'ND ARODUCT. AROC'DUR' ARODUCT(a nu$%e#% nu$%e#! nu$%e) IS )'8IN 133 d%$sNoutput5putNline(=Aodu!t of a#% I = XX a E % E !). 'ND ARODUCT. )'8IN p(i). p(K). podu!t(@#C). podu!t(@#C#D). 'ND. Output0 a I C % I C Aodu!t of a#% I 13 Aodu!t of a#% I 213 AROC'DUR'S 9'RS'S 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%$sNoutput whee as po!edue !an not5 STOR' 9'RS'S 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 )7 &eeping the stoed su%poga$ !ode sepaate fo$ the !alling %lo!&# the !alling %lo!& is shote and easie to undestand5 134 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)MSNS:(R'DNAOOL 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%$sNoutput5putNline(=Stoed su%poga$=). 'ND. Output0 SQL- e/e! p Stoed su%poga$ '/10 D'CL(R' AROC'DUR' A IS )'8IN d%$sNoutput5putNline(=Stoed su%poga$=). 'ND. )'8IN p. 'ND. Output0 Stoed 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 ( stoed su%poga$ is $a&ed as invalid in the data di!tiona7 if it has !o$pile eos5 135 ( stoed su%poga$ !an also %e!o$e invalid if a DDL opeation is pefo$ed on one of its dependent o%Ke!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 A2_9IS. 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%Ke!ts is !he!&ed at unti$e5 6hen A2 is !alled# the e$ote data di!tiona7 is Vueied 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%Ke!ts ae !o$paed5 The last_ddl_time field of user_ob!ects !ontains the ti$esta$p5 If the %ase o%Ke!t has a newe ti$esta$p than the dependent o%Ke!t# the dependent o%Ke!t will %e e!o$piled5 ISSU'S 6IT: T:IS MOD'L If the o%Ke!ts ae in diffeent ti$e Uones# 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 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 136 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'ND'A'ND'NCI'SNMOD' $ust %e set to SI8N(TUR'5 This is a paa$ete in the data%ase initialiUation file5 T:R'' 6(*S OB S'TTIN8 T:IS MOD' (dd the line R'MOT'ND'A'ND'NCI'SNMOD'ISI8N(TUR' to the data%ase initialiUation 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$oteNdependen!iesN$ode I 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$oteNdependen!iesN$ode I 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' AROC'DUR' A2 IS )'8IN d%$sNoutput5putNline(=Bo$ po!edue p2=). p1. 137 'ND A2. AROC'DUR' A1 IS )'8IN d%$sNoutput5putNline(=Bo$ po!edue p1=). p4. 'ND A1. AROC'DUR' A4 IS )'8IN d%$sNoutput5putNline(=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%$sNoutput5putNline(=Bo$ po!edue p2=). p1. 'ND A2. AROC'DUR' A1 IS )'8IN d%$sNoutput5putNline(=Bo$ po!edue p1=). p4. 'ND A1. 138 AROC'DUR' A4 IS )'8IN d%$sNoutput5putNline(=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$pNpo! then use ( gants e/e!ute pivilege on po!edue to use ) with the following !o$$and5 8ant e/e!ute on e$pNpo! to use )5 Then use ) !an un the po!edue %7 issuing '/e! use (5e$pNpo! 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) 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 139 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 Invo&e;s and Define;s ights5 )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%Ke!t t7pe spe!ifi!ations onl75 use( !eated the following po!edue CR'(T' OR R'AL(C' AROC'DUR' A (UT:ID CURR'NTNUS'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 !uentNuse 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 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. 140 )'8IN fo v in ! loop d%$sNoutput5putNline(LNo I L 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ðNole. SQL- gant all on student to saðNole. SQL- gant saðNole 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%$sNoutput5putNline(LNo I L 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 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 141 ( 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 9iew ( view is a vitual ta%le that !onsists of !olu$ns fo$ one o $oe ta%les5 Though it is si$ila to a ta%le# it is stoed in the data%ase5 It is a Vue7 stoed as an o%Ke!t5 :en!e# a view is an o%Ke!t that deives its data fo$ one o $oe ta%les5 '/a$ple CR'(T' 9I'6 vwCusto$e (S S'L'CT Custo$eId# Co$pan7 Na$e# Ahone BROM Custo$es 142 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 initialiUation needs to %e un the fist ti$e the pa!&age is instantiated within a session5 This !an %e done %7 adding initialiUation se!tion to the pa!&age %od7 afte all the o%Ke!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 COMAILIN8 A(CF(8'S (lte pa!&age AF8 !o$pile. (lte pa!&age AF8 !o$pile spe!ifi!ation. (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%Ke!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 143 To fo!e the oa!le to use seiall7 eusa%le vesion then in!lude AR(8M( S'RI(LL*NR'US()L' in %oth pa!&age spe! and %od75 '/a$ine the following pa!&age !eate o epla!e pa!&age p&g is pag$a seiall7Neusa%le. po!edue e$pNpo!. end p&g. !eate o epla!e pa!&age %od7 p&g is pag$a seiall7Neusa%le. !uso ! is sele!t ena$e fo$ e$p. po!edue e$pNpo! is vNena$e e$p5ena$eMt7pe. vNflag %oolean 0I tue. vNnu$ows nu$%e 0I 3. %egin if not !Misopen then open !. end if. while vNflag loop fet!h ! into vNena$e. vNnu$ows 0I vNnu$ows H 2. if vNnu$ows I C then vNflag 0I false. end if. d%$sNoutput5putNline(='na$e I = XX vNena$e). end loop. end e$pNpo!. end p&g. SQL- e/e! p&g5e$pNpo! 'na$e I SMIT: 'na$e I (LL'N 'na$e I 6(RD 'na$e I >ON'S 144 'na$e I M(RTIN SQL- e/e! p&g5e$pNpo! 'na$e I SMIT: 'na$e I (LL'N 'na$e I 6(RD 'na$e I >ON'S 'na$e I 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!le5 '/a$ine the following pa!&age !eate o epla!e pa!&age p&g is po!edue e$pNpo!. end p&g. !eate o epla!e pa!&age %od7 p&g is !uso ! is sele!t ena$e fo$ e$p. po!edue e$pNpo! is vNena$e e$p5ena$eMt7pe. vNflag %oolean 0I tue. vNnu$ows nu$%e 0I 3. %egin if not !Misopen then open !. end if. while vNflag loop fet!h ! into vNena$e. vNnu$ows 0I vNnu$ows H 2. if vNnu$ows I C then vNflag 0I false. 145 end if. d%$sNoutput5putNline(='na$e I = XX vNena$e). end loop. end e$pNpo!. end p&g. SQL- e/e! p&g5e$pNpo! 'na$e I SMIT: 'na$e I (LL'N 'na$e I 6(RD 'na$e I >ON'S 'na$e I M(RTIN SQL- e/e! p&g5e$pNpo! 'na$e I )L(F' 'na$e I CL(RF 'na$e I SCOTT 'na$e I FIN8 'na$e I 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 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 !eate o epla!e pa!&age p&g is v nu$%e 0I C. po!edue p. end p&g. !eate o epla!e pa!&age %od7 p&g is po!edue p is 146 %egin d%$sNoutput5putNline(=v I = XX v). v 0I 23. d%$sNoutput5putNline(=v I = XX v). end p. end p&g. Conne!t to se!ond session Run the following !ode %egin p&g5p. end. 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 %egin p&g5p. end. 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 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 D(T( MOD'L BOR SU)ARO8R(MS (ND A(CF(8'S UseNo%Ke!ts UseNsou!e UseNeos 147 CURSORS Cursor 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 set whi!h is the set of ows etuned %7 the Vue75 Cuso !ontains two pats :eade )od7 :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 deptMowt7pe is sele!t Efo$ dept. 148 In the a%ove :eade \ !uso !(dno in nu$%e) etun deptMowt7pe )od7 \ sele!t Efo$ dept CURSOR T*A'S I$pli!it (SQL) '/pli!it Aaa$eteiUed !usos R'B !usos CURSOR ST(8'S Open Bet!h Close CURSOR (TTRI)UT'S Mfound Mnotfound Mow!ount Misopen M%ul&Now!ount M%ul&Ne/!eptions CURSOR D'CL'R(TION S7nta/0 Cuso ,cursor_name- is select statement. '/0 Cuso ! is sele!t Efo$ dept. CURSOR LOOAS Si$ple loop 6hile loop Bo loop SIMAL' LOOA 149 S7nta/0 Loop Bet!h ,cursor_name- into ,record_variable-. '/it when ,cursor_name- M notfound. ,statements-. 'nd loop. '/0 D'CL(R' !uso ! is sele!t E fo$ student. vNstud studentMowt7pe. )'8IN open !. loop fet!h ! into vNstud. e/it when !Mnotfound. d%$sNoutput5putNline(=Na$e I = XX vNstud5na$e). end loop. !lose !. 'ND. Output0 Na$e I sað Na$e I sinu Na$e I satish Na$e I sudha 6:IL' LOOA S7nta/0 6hile ,cursor_name- M found loop Bet!h ,cursor_name- into ,record_variable-. ,statements-. 'nd loop. '/0 D'CL(R' !uso ! is sele!t E fo$ student. vNstud studentMowt7pe. )'8IN 150 open !. fet!h ! into vNstud. while !Mfound loop fet!h ! into vNstud. d%$sNoutput5putNline(=Na$e I = XX vNstud5na$e). end loop. !lose !. 'ND. Output0 Na$e I sað Na$e I sinu Na$e I satish Na$e I sudha BOR LOOA S7nta/0 fo ,record_variable- in ,cursor_name- loop ,statements-. 'nd loop. '/0 D'CL(R' !uso ! is sele!t E fo$ student. )'8IN fo vNstud in ! loop d%$sNoutput5putNline(=Na$e I = XX vNstud5na$e). end loop. 'ND. Output0 Na$e I sað Na$e I sinu Na$e I satish Na$e I sudha A(R(M'T(RIZ'D CURSORS 151 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 I dno. vNdept deptMowt7pe. )'8IN open !(13). loop fet!h ! into vNdept. e/it when !Mnotfound. d%$sNoutput5putNline(=Dna$e I = XX vNdept5dna$e XX = Lo! I = XX vNdept5lo!). end loop. !lose !. 'ND. Output0 Dna$e I R'S'(RC: Lo! I 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 *ou !an use dot $ethod fo pa!&aged !usos li&e p&g5! 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 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 152 Ref !uso with etun t7pe is !alled stron cursor5 Ref !uso with out etun t7pe is !alled weak cursor5 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 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 *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 eVualit7# ineVualit7 and nullit75 '/0 CR'(T' OR R'AL(C' AROC'DUR' R'BNCURSOR(T()L'NN(M' IN 9(RC:(R) IS t7pe t is ef !uso. ! t. vNdept deptMowt7pe. t7pe is e!od(ena$e e$p5ena$eMt7pe#Ko% e$p5Ko%Mt7pe#sal e$p5salMt7pe). vNe$p . vNstud student5na$eMt7pe. )'8IN if ta%leNna$e I =D'AT= then open ! fo sele!t E fo$ dept. elsif ta%leNna$e I ='MA= then open ! fo sele!t ena$e#Ko%#sal fo$ e$p. elsif ta%leNna$e I =STUD'NT= then open ! fo sele!t na$e fo$ student. end if. loop if ta%leNna$e I =D'AT= then fet!h ! into vNdept. e/it when !Mnotfound. d%$sNoutput5putNline(=Deptno I = XX vNdept5deptno XX = Dna$e I = XX vNdept5dna$e XX = Lo! I = XX vNdept5lo!). 153 elsif ta%leNna$e I ='MA= then fet!h ! into vNe$p. e/it when !Mnotfound. d%$sNoutput5putNline(='na$e I = XX vNe$p5ena$e XX = >o% I = XX vNe$p5Ko% XX = Sal I = XX vNe$p5sal). elsif ta%leNna$e I =STUD'NT= then fet!h ! into vNstud. e/it when !Mnotfound. d%$sNoutput5putNline(=Na$e I = XX vNstud). end if. end loop. !lose !. 'ND. Output0 SQL- e/e! efN!uso(=D'AT=) Deptno I 23 Dna$e I (CCOUNTIN8 Lo! I N'6 *ORF Deptno I 13 Dna$e I R'S'(RC: Lo! I D(LL(S Deptno I 43 Dna$e I S(L'S Lo! I C:IC(8O Deptno I @3 Dna$e I OA'R(TIONS Lo! I )OSTON SQL- e/e! efN!uso(='MA=) 'na$e I SMIT: >o% I CL'RF Sal I G33 'na$e I (LL'N >o% I S(L'SM(N Sal I 2D33 'na$e I 6(RD >o% I S(L'SM(N Sal I 21C3 'na$e I >ON'S >o% I M(N(8'R Sal I 1TWC 'na$e I M(RTIN >o% I S(L'SM(N Sal I 21C3 'na$e I )L(F' >o% I M(N(8'R Sal I 1GC3 'na$e I CL(RF >o% I M(N(8'R Sal I 1@C3 'na$e I SCOTT >o% I (N(L*ST Sal I 4333 'na$e I FIN8 >o% I AR'SID'NT Sal I C333 'na$e I TURN'R >o% I S(L'SM(N Sal I 2C33 'na$e I (D(MS >o% I CL'RF Sal I 2233 'na$e I >(M'S >o% I CL'RF Sal I TC3 'na$e I BORD >o% I (N(L*ST Sal I 4333 'na$e I MILL'R >o% I CL'RF Sal I 2433 154 SQL- e/e! efN!uso(=STUD'NT=) Na$e I sað Na$e I sinu Na$e I satish Na$e I 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 I d5deptno) fo$ e$p e. t7pe t is ef !uso. !2 t. !1 t. v2 e$p5ena$eMt7pe. v1 dept5dna$eMt7pe. )'8IN open !. loop 155 fet!h !2 into v2. e/it when !2Mnotfound. fet!h !1 into v1. e/it when !1Mnotfound. d%$sNoutput5putNline(='na$e I = XX v2 XX = Dna$e I = 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 deptMowt7pe is sele!t Efo$ dept. O Cuso !2 is sele!t Efo$ dept. Cuso ! etun !2Mowt7pe is sele!t Efo$ dept. O T7pe t is e!od(deptno dept5deptnoMt7pe# dna$e dept5dna$eMt7pe). Cuso ! etun t is sele!t deptno# dna$e fo$ dept. BOR UAD(T' (ND 6:'R' CURR'NT OB Cuso ! is sele!t Efo$ dept fo update. O Cuso ! is sele!t Efo$ dept fo update of dna$e. Update dept set dna$e I Lfin; whee deptno I 13 whee !uent of !. Co$$it. )ULF COLL'CT 156 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?sVl and sVl engines5 Redu!es the ovehead of etieving data5 *ou !an use %ul& !olle!t in %oth d7na$i! and stati! sVl5 *ou !an use %ul& !olle!t in sele!t# fet!h into and etuning into !lauses5 SQL engine auto$ati!all7 initialiUes 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 Vue75 *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: de!lae T7pe t is ta%le of deptMowt7pe. nt t. Cuso ! is sele!t Efo$ dept. %egin Open !. Bet!h ! %ul& !olle!t into nt. Close !. 'nd. )ULF COLL'CT IN S'L'CT de!lae T7pe t is ta%le of deptMowt7pe. Nt t. %egin Sele!t E into nt fo$ dept. 'nd. LIMIT IN )ULF COLL'CT de!lae T7pe t is ta%le of e$pMowt7pe. 157 nt t. Cuso ! is sele!t Efo$ e$p. %egin Open !. Bet!h ! %ul& !olle!t into nt li$it C. Close !. 'nd. MULTIAL' B'TC:'S IN INTO CL(US' de!lae t7pe t is ta%le of dept5deptnoMt7pe. nt t. t7pe t2 is ta%le of dept5dna$eMt7pe. nt2 t2. !uso ! is sele!t deptno#dna$e fo$ dept. %egin open !. fet!h ! %ul& !olle!t into nt#nt2. !lose !. end. R'TURNIN8 CL(US' IN )ULF COLL'CT de!lae t7pe t is ta%le of nu$%e(1). nt t 0I t(2#1#4#@). t7pe t2 is ta%le of va!ha(1). nt2 t2. t7pe t1 is ta%le of studentMowt7pe. nt1 t1. %egin sele!t na$e %ul& !olle!t into nt2 fo$ student. foall v in nt25fist55nt25last update student set no I nt(v) whee na$e I nt2(v) etuning no#na$e#$a&s %ul& !olle!t into nt1. fo v in nt15fist55nt15last loop d%$sNoutput5putNline(=Ma&s I = XX nt1(v)). 158 end loop. end. AOINTS TO R'M'M)'R 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 M%ul&Now!ount and M%ul&Ne/!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 The onl7 state$ents allowed die!tl7 in pl?sVl ae DML and TCL5 )INDIN8 159 )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?sVl %7 default uses eal7 %inding5 )inding also involves !he!&ing the data%ase fo pe$issions to a!!ess the o%Ke!t Refeen!ed5 D*N(MIC SQL If 7ou use DDL in pl?sVl it validates the pe$issions and e/isten!e if eVuies 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!hniVues ae availa%le fo D7na$i! SQL5 Native D7na$i! SQL D)MSNSQL pa!&age USIN8 N(TI9' D*N(MIC SQL Using e/e!ute i$$ediate )egin '/e!ute i$$ediate L!eate ta%le student(no nu$%e(1)#na$e va!ha(23));. o '/e!ute i$$ediate (L!eate ta%le student(no nu$%e(1)#na$e va!ha(23));). 'nd. Using e/e!ute i$$ediate with pl?sVl vaia%les de!lae v va!ha(233). %egin v 0I =!eate ta%le student(no nu$%e(1)#na$e va!ha(23))=. e/e!ute i$$ediate v. end. Using e/e!ute i$$ediate with %ind vaia%les and using !lause 160 de!lae v va!ha(233). %egin v 0I =inset into student values(0v2#0v1#0v4)=. e/e!ute i$$ediate v using D#=f=#D33. end. '/e!uting Vueies with open fo and using !lause !eate o epla!e po!edue p(s$a&s in nu$%e) is s va!ha(233) 0I =sele!t Efo$ student whee $a&s - 0$=. t7pe t is ef !uso. ! t. v studentMowt7pe. %egin open ! fo s using s$a&s. loop fet!h ! into v. e/it when !Mnotfound. d%$sNoutput5putNline(=Student Ma&s I = XX v5$a&s). end loop. !lose !. end.
Queies with e/e!ute i$$ediate de!lae dNna$e dept5dna$eMt7pe. l! dept5lo!Mt7pe. v va!ha(233). %egin v 0I =sele!t dna$e fo$ dept whee deptno I 23=. e/e!ute i$$ediate v into dNna$e. d%$sNoutput5putNline(=Dna$e I =XX dNna$e). v 0I =sele!t lo! fo$ dept whee dna$e I 0dn=. e/e!ute i$$ediate v into l! using dNna$e. d%$sNoutput5putNline(=Lo! I = XX l!). end. 161 )ind vaia%les De!lae 9 nu$%e 0I C33. )egin Update student set $a&s I v whee. "" hee v is %ind vaia%le 'nd. 9aia%le Na$es De!lae Ma&s nu$%e(4) 0I 233. )egin Delete student whee $a&s I $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 ,,$7N%lo!&-- De!lae Ma&s nu$%e(4) 0I 233. )egin Delete student whee $a&s I $7N%lo!&5$a&s. "" delete ows whi!h has a $a&s of 233 'nd. 8etting data into pl?sVl vaia%les De!lae 92 nu$%e. 91 va!ha(1). )egin Sele!t no#na$e into v2#v1 fo$ student whee $a&s I 233. 'nd. DML and Re!ods !eate o epla!e po!edue p(sow in studentMowt7pe) is %egin inset into student values sow. end p. de!lae 162 s studentMowt7pe. %egin s5no 0I 22. s5na$e 0I =aa=. s5$a&s 0I 233. p(s). end. Re!od %ased insets de!lae sow studentMowt7pe. %egin sow5no 0I W. sow5na$e 0I =!!=. sow5$a&s 0I C33. inset into student values sow. end. Re!od %ased updates de!lae sow studentMowt7pe. %egin sow5no 0I D. sow5na$e 0I =!!=. sow5$a&s 0I C33. update student set owIsow whee no I sow5no. end. Using e!ods with etuning !lause de!lae sow studentMowt7pe. setun studentMowt7pe. %egin sow5no 0I G. sow5na$e 0I =dd=. sow5$a&s 0I C33. inset into student values sow etuning no#na$e#$a&s into setun. 163 d%$sNoutput5putNline(=No I = XX setun5no). d%$sNoutput5putNline(=No I = XX setun5na$e). d%$sNoutput5putNline(=No I = XX setun5$a&s). end. Boall with non"seVuential aa7s de!lae t7pe t is ta%le of student5noMt7pe inde/ %7 %ina7Nintege. i%t t. %egin i%t(2) 0I 2. i%t(23) 0I 1. foall i in i%t5fist55i%t5last update student set $a&s I T33 whee no I i%t(i). end. The a%ove poga$ will give eo li&e Lele$ent at inde/ O1P does not e/ists5 Usage of indi!es of to avoid the a%ove eo de!lae t7pe t is ta%le of student5noMt7pe inde/ %7 %ina7Nintege. i%t t. t7pe t2 is ta%le of %oolean inde/ %7 %ina7Nintege. i%t2 t2. %egin i%t(2) 0I 2. i%t(23) 0I 1. i%t(233) 0I 4. i%t2(2) 0I tue. i%t(23) 0I tue. i%t2(233) 0I tue. foall i in indi!es of i%t2 update student set $a&s I T33 whee no I i%t(i). end. )ul& )inds Aassing the entie pl?sVl ta%le to the SQL engine in one step is &nown as %ul& %ind5 164 )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 Retuning !lause This will %e used onl7 with DML state$ents to etun data into pl?sVl 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 9aa7s Nested ta%les Inde/ " %7 ta%les 9(RR(*S ( vaa7 is datat7pe ve7 si$ila to an aa75 ( vaa7 has a fi/ed li$it on its siUe# 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$ siUe of the vaa7 is 1 giga %7tes5 S7nta/0 T7pe ,type_name$ is vaa7 X va7ing aa7 (,limit$) of ,element_type$. '/20 165 D'CL(R' t7pe t is vaa7(23) of va!ha(1). va t 0I t(=a=#=%=#=!=#=d=). flag %oolean. )'8IN d%$sNoutput5putNline(=Li$it I = XX va5li$it). d%$sNoutput5putNline(=Count I = XX va5!ount). d%$sNoutput5putNline(=Bist Inde/ I = XX va5fist). d%$sNoutput5putNline(=Last Inde/ I = XX va5last). d%$sNoutput5putNline(=Ne/t Inde/ I = XX va5ne/t(1)). d%$sNoutput5putNline(=Aevious Inde/ I = XX va5pio(4)). d%$sNoutput5putNline(=9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sNoutput5putNline(=vaO= XX i XX =P I = XX va(i)). end loop. flag 0I va5e/ists(4). if flag I tue then d%$sNoutput5putNline(=Inde/ 4 e/ists with an ele$ent = XX va(4)). else d%$sNoutput5putNline(=Inde/ 4 does not e/ists=). end if. va5e/tend. d%$sNoutput5putNline(=(fte e/tend of one inde/# Count I = XX va5!ount). flag 0I va5e/ists(C). if flag I tue then d%$sNoutput5putNline(=Inde/ C e/ists with an ele$ent = XX va(C)). else d%$sNoutput5putNline(=Inde/ C does not e/ists=). end if. flag 0I va5e/ists(D). if flag I tue then d%$sNoutput5putNline(=Inde/ D e/ists with an ele$ent = XX va(D)). else d%$sNoutput5putNline(=Inde/ D does not e/ists=). end if. va5e/tend(1). d%$sNoutput5putNline(=(fte e/tend of two inde/es# Count I = XX va5!ount). d%$sNoutput5putNline(=9(RR(* 'L'M'NTS=). 166 fo i in va5fist55va5last loop d%$sNoutput5putNline(=vaO= XX i XX =P I = XX va(i)). end loop. va(C) 0I =e=. va(D) 0I =f=. va(W) 0I =g=. d%$sNoutput5putNline(=(BT'R (SSIN8NIN8 9(LU'S TO '+T'ND'D 'L'M'NTS# 9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sNoutput5putNline(=vaO= XX i XX =P I = XX va(i)). end loop. va5e/tend(4#1). d%$sNoutput5putNline(=(fte e/tend of thee inde/es# Count I = XX va5!ount). d%$sNoutput5putNline(=9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sNoutput5putNline(=vaO= XX i XX =P I = XX va(i)). end loop. va5ti$. d%$sNoutput5putNline(=(fte ti$ of one inde/# Count I = XX va5!ount). va5ti$(4). d%$sNoutput5putNline(=(fte ti$ of thee inde/s# Count I = XX va5!ount). d%$sNoutput5putNline(=(BT'R TRIM# 9(RR(* 'L'M'NTS=). fo i in va5fist55va5last loop d%$sNoutput5putNline(=vaO= XX i XX =P I = XX va(i)). end loop. va5delete. d%$sNoutput5putNline(=(fte delete of entie vaa7# Count I = XX va5!ount). 'ND. Output0 Li$it I 23 Count I @ Bist Inde/ I 2 Last Inde/ I @ Ne/t Inde/ I 4 Aevious Inde/ I 1 9(RR(* 'L'M'NTS vaO2P I a 167 vaO1P I % vaO4P I ! vaO@P I d Inde/ 4 e/ists with an ele$ent ! (fte e/tend of one inde/# Count I C Inde/ C e/ists with an ele$ent Inde/ D does not e/ists (fte e/tend of two inde/es# Count I W 9(RR(* 'L'M'NTS vaO2P I a vaO1P I % vaO4P I ! vaO@P I d vaOCP I vaODP I vaOWP I (BT'R (SSIN8NIN8 9(LU'S TO '+T'ND'D 'L'M'NTS# 9(RR(* 'L'M'NTS vaO2P I a vaO1P I % vaO4P I ! vaO@P I d vaOCP I e vaODP I f vaOWP I g (fte e/tend of thee inde/es# Count I 23 9(RR(* 'L'M'NTS vaO2P I a vaO1P I % vaO4P I ! vaO@P I d vaOCP I e vaODP I f vaOWP I g vaOGP I % vaOTP I % vaO23P I % (fte ti$ of one inde/# Count I T 168 (fte ti$ of thee inde/s# Count I D (BT'R TRIM# 9(RR(* 'L'M'NTS vaO2P I a vaO1P I % vaO4P I ! vaO@P I d vaOCP I e vaODP I f (fte delete of entie vaa7# Count I 3 '/10 D'CL(R' t7pe t is vaa7(@) of studentMowt7pe. va t 0I t(null#null#null#null). )'8IN fo i in 255va5!ount loop sele!t E into va(i) fo$ student whee sno I i. d%$sNoutput5putNline(=Sno I = XX va(i)5sno XX = Sna$e I = XX va(i)5sna$e). end loop. 'ND. Output0 Sno I 2 Sna$e I sað Sno I 1 Sna$e I sinu Sno I 4 Sna$e I div7a Sno I @ Sna$e I $anogni '/40 D'CL(R' t7pe t is vaa7(@) of student5s$a&sMt7pe. va t 0I t(null#null#null#null). )'8IN fo i in 255va5!ount loop sele!t s$a&s into va(i) fo$ student whee sno I i. d%$sNoutput5putNline(=S$a&s I = XX va(i)). end loop. 'ND. Output0 S$a&s I 233 169 S$a&s I 133 S$a&s I 433 S$a&s I @33 '/@0 D'CL(R' t7pe is e!od(!2 student5sna$eMt7pe#!1 student5s$a&sMt7pe). t7pe t is vaa7(@) of . va t 0I 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 I i. d%$sNoutput5putNline(=Sna$e I = XX va(i)5!2 XX = S$a&s I = XX va(i)5!1). end loop. 'ND. Output0 Sna$e I sað S$a&s I 233 Sna$e I sinu S$a&s I 133 Sna$e I div7a S$a&s I 433 Sna$e I $anogni S$a&s I @33 '/C0 D'CL(R' t7pe t is vaa7(2) of add. va t 0I t(null). !uso ! is sele!t E fo$ e$plo7. i nu$%e 0I 2. )'8IN fo v in ! loop sele!t addess into va(i) fo$ e$plo7 whee ena$e I v5ena$e. d%$sNoutput5putNline(=:no I = XX va(i)5hno XX = Cit7 I = XX va(i)5!it7). end loop. 'ND. Output0 :no I 22 Cit7 I h7d :no I 11 Cit7 I %ang :no I 44 Cit7 I &o!hi 170 '/D0 D'CL(R' t7pe t is vaa7(C) of va!ha(1). va2 t. va1 t 0I t(). )'8IN if va2 is null then d%$sNoutput5putNline(=va2 is null=). else d%$sNoutput5putNline(=va2 is not null=). end if. if va1 is null then d%$sNoutput5putNline(=va1 is null=). else d%$sNoutput5putNline(=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 siUe5 'le$ents ae inseted into nested ta%le stating at inde/ 25 The $a/i$u$ siUe of the vaa7 is 1 giga %7tes5 S7nta/0 T7pe ,type_name$ is ta%le of ,table_type$. '/20 D'CL(R' t7pe t is ta%le of va!ha(1). nt t 0I t(=a=#=%=#=!=#=d=). 171 flag %oolean. )'8IN if nt5li$it is null then d%$sNoutput5putNline(=No li$it to Nested Ta%les=). else d%$sNoutput5putNline(=Li$it I = XX nt5li$it). end if. d%$sNoutput5putNline(=Count I = XX nt5!ount). d%$sNoutput5putNline(=Bist Inde/ I = XX nt5fist). d%$sNoutput5putNline(=Last Inde/ I = XX nt5last). d%$sNoutput5putNline(=Ne/t Inde/ I = XX nt5ne/t(1)). d%$sNoutput5putNline(=Aevious Inde/ I = XX nt5pio(4)). d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sNoutput5putNline(=ntO= XX i XX =P I = XX nt(i)). end loop. flag 0I nt5e/ists(4). if flag I tue then d%$sNoutput5putNline(=Inde/ 4 e/ists with an ele$ent = XX nt(4)). else d%$sNoutput5putNline(=Inde/ 4 does not e/ists=). end if. nt5e/tend. d%$sNoutput5putNline(=(fte e/tend of one inde/# Count I = XX nt5!ount). flag 0I nt5e/ists(C). if flag I tue then d%$sNoutput5putNline(=Inde/ C e/ists with an ele$ent = XX nt(C)). else d%$sNoutput5putNline(=Inde/ C does not e/ists=). end if. flag 0I nt5e/ists(D). if flag I tue then d%$sNoutput5putNline(=Inde/ D e/ists with an ele$ent = XX nt(D)). else d%$sNoutput5putNline(=Inde/ D does not e/ists=). end if. nt5e/tend(1). d%$sNoutput5putNline(=(fte e/tend of two inde/es# Count I = XX nt5!ount). 172 d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sNoutput5putNline(=ntO= XX i XX =P I = XX nt(i)). end loop. nt(C) 0I =e=. nt(D) 0I =f=. nt(W) 0I =g=. d%$sNoutput5putNline(=(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%$sNoutput5putNline(=ntO= XX i XX =P I = XX nt(i)). end loop. nt5e/tend(C#1). d%$sNoutput5putNline(=(fte e/tend of five inde/es# Count I = XX nt5!ount). d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sNoutput5putNline(=ntO= XX i XX =P I = XX nt(i)). end loop. nt5ti$. d%$sNoutput5putNline(=(fte ti$ of one inde/# Count I = XX nt5!ount). nt5ti$(4). d%$sNoutput5putNline(=(fte ti$ of thee inde/s# Count I = XX nt5!ount). d%$sNoutput5putNline(=(BT'R TRIM# N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop d%$sNoutput5putNline(=ntO= XX i XX =P I = XX nt(i)). end loop. nt5delete(2). d%$sNoutput5putNline(=(fte delete of fist inde/# Count I = XX nt5!ount). d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 155nt5!ountH2 loop d%$sNoutput5putNline(=ntO= XX i XX =P I = XX nt(i)). end loop. nt5delete(@). d%$sNoutput5putNline(=(fte delete of fouth inde/# Count I = XX nt5!ount). d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 1554 loop d%$sNoutput5putNline(=ntO= XX i XX =P I = XX nt(i)). end loop. 173 fo i in C55nt5!ountH1 loop d%$sNoutput5putNline(=ntO= XX i XX =P I = XX nt(i)). end loop. nt5delete. d%$sNoutput5putNline(=(fte delete of entie nested ta%le# Count I = XX nt5!ount). 'ND. Output0 No li$it to Nested Ta%les Count I @ Bist Inde/ I 2 Last Inde/ I @ Ne/t Inde/ I 4 Aevious Inde/ I 1 N'ST'D T()L' 'L'M'NTS ntO2P I a ntO1P I % ntO4P I ! ntO@P I d Inde/ 4 e/ists with an ele$ent ! (fte e/tend of one inde/# Count I C Inde/ C e/ists with an ele$ent Inde/ D does not e/ists (fte e/tend of two inde/es# Count I W N'ST'D T()L' 'L'M'NTS ntO2P I a ntO1P I % ntO4P I ! ntO@P I d ntOCP I ntODP I ntOWP I (BT'R (SSIN8NIN8 9(LU'S TO '+T'ND'D 'L'M'NTS# N'ST'D T()L' 'L'M'NTS ntO2P I a ntO1P I % ntO4P I ! ntO@P I d ntOCP I e 174 ntODP I f ntOWP I g (fte e/tend of five inde/es# Count I 21 N'ST'D T()L' 'L'M'NTS ntO2P I a ntO1P I % ntO4P I ! ntO@P I d ntOCP I e ntODP I f ntOWP I g ntOGP I % ntOTP I % ntO23P I % ntO22P I % ntO21P I % (fte ti$ of one inde/# Count I 22 (fte ti$ of thee inde/s# Count I G (BT'R TRIM# N'ST'D T()L' 'L'M'NTS ntO2P I a ntO1P I % ntO4P I ! ntO@P I d ntOCP I e ntODP I f ntOWP I g ntOGP I % (fte delete of fist inde/# Count I W N'ST'D T()L' 'L'M'NTS ntO1P I % ntO4P I ! ntO@P I d ntOCP I e ntODP I f ntOWP I g ntOGP I % (fte delete of fouth inde/# Count I D 175 N'ST'D T()L' 'L'M'NTS ntO1P I % ntO4P I ! ntOCP I e ntODP I f ntOWP I g ntOGP I % (fte delete of entie nested ta%le# Count I 3 '/10 D'CL(R' t7pe t is ta%le of studentMowt7pe. nt t 0I t(null#null#null#null). )'8IN fo i in 255nt5!ount loop sele!t E into nt(i) fo$ student whee sno I i. d%$sNoutput5putNline(=Sno I = XX nt(i)5sno XX = Sna$e I = XX nt(i)5sna$e). end loop. 'ND. Output0 Sno I 2 Sna$e I sað Sno I 1 Sna$e I sinu Sno I 4 Sna$e I div7a Sno I @ Sna$e I $anogni '/40 D'CL(R' t7pe t is ta%le of student5s$a&sMt7pe. nt t 0I t(null#null#null#null). )'8IN fo i in 255nt5!ount loop sele!t s$a&s into nt(i) fo$ student whee sno I i. d%$sNoutput5putNline(=S$a&s I = XX nt(i)). end loop. 'ND. Output0 S$a&s I 233 176 S$a&s I 133 S$a&s I 433 S$a&s I @33 '/@0 D'CL(R' t7pe is e!od(!2 student5sna$eMt7pe#!1 student5s$a&sMt7pe). t7pe t is ta%le of . nt t 0I 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 I i. d%$sNoutput5putNline(=Sna$e I = XX nt(i)5!2 XX = S$a&s I = XX nt(i)5!1). end loop. 'ND. Output0 Sna$e I sað S$a&s I 233 Sna$e I sinu S$a&s I 133 Sna$e I div7a S$a&s I 433 Sna$e I $anogni S$a&s I @33 '/C0 D'CL(R' t7pe t is ta%le of add. nt t 0I t(null). !uso ! is sele!t E fo$ e$plo7. i nu$%e 0I 2. )'8IN fo v in ! loop sele!t addess into nt(i) fo$ e$plo7 whee ena$e I v5ena$e. d%$sNoutput5putNline(=:no I = XX nt(i)5hno XX = Cit7 I = XX nt(i)5!it7). end loop. 'ND. Output0 :no I 22 Cit7 I h7d :no I 11 Cit7 I %ang :no I 44 Cit7 I &o!hi 177 '/D0 D'CL(R' t7pe t is vaa7(C) of va!ha(1). nt2 t. nt1 t 0I t(). )'8IN if nt2 is null then d%$sNoutput5putNline(=nt2 is null=). else d%$sNoutput5putNline(=nt2 is not null=). end if. if nt1 is null then d%$sNoutput5putNline(=nt1 is null=). else d%$sNoutput5putNline(=nt1 is not null=). end if. 'ND. Output0 nt2 is null nt1 is not null IND'+")* T()L'S (n inde/"%7 ta%le has no li$it on its siUe5 'le$ents ae inseted into inde/"%7 ta%le whose inde/ $a7 stat non" seVuentiall7 in!luding negative integes5 S7nta/0 T7pe ,type_name$ is ta%le of ,table_type$ inde/ %7 %ina7Nintege. '/0 D'CL(R' t7pe t is ta%le of va!ha(1) inde/ %7 %ina7Nintege. i%t t. flag %oolean. )'8IN 178 i%t(2) 0I =a=. i%t("13) 0I =%=. i%t(43) 0I =!=. i%t(233) 0I =d=. if i%t5li$it is null then d%$sNoutput5putNline(=No li$it to Inde/ %7 Ta%les=). else d%$sNoutput5putNline(=Li$it I = XX i%t5li$it). end if. d%$sNoutput5putNline(=Count I = XX i%t5!ount). d%$sNoutput5putNline(=Bist Inde/ I = XX i%t5fist). d%$sNoutput5putNline(=Last Inde/ I = XX i%t5last). d%$sNoutput5putNline(=Ne/t Inde/ I = XX i%t5ne/t(1)). d%$sNoutput5putNline(=Aevious Inde/ I = XX i%t5pio(4)). d%$sNoutput5putNline(=IND'+ )* T()L' 'L'M'NTS=). d%$sNoutput5putNline(=i%tO"13P I = XX i%t("13)). d%$sNoutput5putNline(=i%tO2P I = XX i%t(2)). d%$sNoutput5putNline(=i%tO43P I = XX i%t(43)). d%$sNoutput5putNline(=i%tO233P I = XX i%t(233)). flag 0I i%t5e/ists(43). if flag I tue then d%$sNoutput5putNline(=Inde/ 43 e/ists with an ele$ent = XX i%t(43)). else d%$sNoutput5putNline(=Inde/ 43 does not e/ists=). end if. flag 0I i%t5e/ists(C3). if flag I tue then d%$sNoutput5putNline(=Inde/ C3 e/ists with an ele$ent = XX i%t(43)). else d%$sNoutput5putNline(=Inde/ C3 does not e/ists=). end if. i%t5delete(2). d%$sNoutput5putNline(=(fte delete of fist inde/# Count I = XX i%t5!ount). i%t5delete(43). d%$sNoutput5putNline(=(fte delete of inde/ thit7# Count I = XX i%t5!ount). d%$sNoutput5putNline(=IND'+ )* T()L' 'L'M'NTS=). d%$sNoutput5putNline(=i%tO"13P I = XX i%t("13)). 179 d%$sNoutput5putNline(=i%tO233P I = XX i%t(233)). i%t5delete. d%$sNoutput5putNline(=(fte delete of entie inde/"%7 ta%le# Count I = XX i%t5!ount). 'ND. Output0 No li$it to Inde/ %7 Ta%les Count I @ Bist Inde/ I "13 Last Inde/ I 233 Ne/t Inde/ I 43 Aevious Inde/ I 2 IND'+ )* T()L' 'L'M'NTS i%tO"13P I % i%tO2P I a i%tO43P I ! i%tO233P I d Inde/ 43 e/ists with an ele$ent ! Inde/ C3 does not e/ists (fte delete of fist inde/# Count I 4 (fte delete of inde/ thit7# Count I 1 IND'+ )* T()L' 'L'M'NTS i%tO"13P I % i%tO233P I d (fte delete of entie inde/"%7 ta%le# Count I 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 initialiUed %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 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 180 Refeen!ing none/istent ele$ents aises SU)SCRIATN)'*ONDNCOUNT in %oth nested ta%les and vaa7s# %ut in !ase of inde/"%7 ta%les NOND(T(NBOUND aises5 Fe7s ae seVuential in %oth nested ta%les and vaa7s# non"seVuential 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 %ina7Nintege. T7pe ,type_name2$ is vaa7(,limit-) X ta%le X of ,type_name1$ 0 inde/ %7 %ina7Nintege. '/20 D'CL(R' t7pe t2 is ta%le of va!ha(1) inde/ %7 %ina7Nintege. t7pe t1 is vaa7(C) of t2. va t1 0I t1(). ! nu$%e 0I TW. flag %oolean. )'8IN va5e/tend(@). d%$sNoutput5putNline(=Count I = XX va5!ount). d%$sNoutput5putNline(=Li$it I = XX va5li$it). fo i in 255va5!ount loop fo K in 255va5!ount loop va(i)(K) 0I !h(!). ! 0I ! H 2. end loop. end loop. d%$sNoutput5putNline(=9(RR(* 'L'M'NTS=). fo i in 255va5!ount loop fo K in 255va5!ount loop d%$sNoutput5putNline(=vaO= XX i XX =PO= XX K XX =P I = XX va(i)(K)). 181 end loop. end loop. d%$sNoutput5putNline(=Bist inde/ I = XX va5fist). d%$sNoutput5putNline(=Last inde/ I = XX va5last). d%$sNoutput5putNline(=Ne/t inde/ I = XX va5ne/t(1)). d%$sNoutput5putNline(=Aevious inde/ I = XX va5pio(4)). flag 0I va5e/ists(1). if flag I tue then d%$sNoutput5putNline(=Inde/ 1 e/ists=). else d%$sNoutput5putNline(=Inde/ 1 e/ists=). end if. va5e/tend. va(2)(C) 0I =V=. va(1)(C) 0I ==. va(4)(C) 0I =s=. va(@)(C) 0I =t=. va(C)(2) 0I =u=. va(C)(1) 0I =v=. va(C)(4) 0I =w=. va(C)(@) 0I =/=. va(C)(C) 0I =7=. d%$sNoutput5putNline(=(fte e/tend of one inde/# Count I = XX va5!ount). d%$sNoutput5putNline(=9(RR(* 'L'M'NTS=). fo i in 255va5!ount loop fo K in 255va5!ount loop d%$sNoutput5putNline(=vaO= XX i XX =PO= XX K XX =P I = XX va(i)(K)). end loop. end loop. va5ti$. d%$sNoutput5putNline(=(fte ti$ of one inde/# Count I = XX va5!ount). va5ti$(1). d%$sNoutput5putNline(=(fte ti$ of two inde/es# Count I = XX va5!ount). d%$sNoutput5putNline(=9(RR(* 'L'M'NTS=). fo i in 255va5!ount loop fo K in 255va5!ount loop d%$sNoutput5putNline(=vaO= XX i XX =PO= XX K XX =P I = XX va(i)(K)). 182 end loop. end loop. va5delete. d%$sNoutput5putNline(=(fte delete of entie vaa7# Count I = XX va5!ount). 'ND. Output0 Count I @ Li$it I C 9(RR(* 'L'M'NTS vaO2PO2P I a vaO2PO1P I % vaO2PO4P I ! vaO2PO@P I d vaO1PO2P I e vaO1PO1P I f vaO1PO4P I g vaO1PO@P I h vaO4PO2P I i vaO4PO1P I K vaO4PO4P I & vaO4PO@P I l vaO@PO2P I $ vaO@PO1P I n vaO@PO4P I o vaO@PO@P I p Bist inde/ I 2 Last inde/ I @ Ne/t inde/ I 4 Aevious inde/ I 1 Inde/ 1 e/ists (fte e/tend of one inde/# Count I C 9(RR(* 'L'M'NTS vaO2PO2P I a vaO2PO1P I % vaO2PO4P I ! vaO2PO@P I d vaO2POCP I V 183 vaO1PO2P I e vaO1PO1P I f vaO1PO4P I g vaO1PO@P I h vaO1POCP I vaO4PO2P I i vaO4PO1P I K vaO4PO4P I & vaO4PO@P I l vaO4POCP I s vaO@PO2P I $ vaO@PO1P I n vaO@PO4P I o vaO@PO@P I p vaO@POCP I t vaOCPO2P I u vaOCPO1P I v vaOCPO4P I w vaOCPO@P I / vaOCPOCP I 7 (fte ti$ of one inde/# Count I @ (fte ti$ of two inde/es# Count I 1 9(RR(* 'L'M'NTS vaO2PO2P I a vaO2PO1P I % vaO1PO2P I e vaO1PO1P I f (fte delete of entie vaa7# Count I 3 '/10 D'CL(R' t7pe t2 is ta%le of va!ha(1) inde/ %7 %ina7Nintege. t7pe t1 is ta%le of t2. nt t1 0I t1(). ! nu$%e 0I DC. v nu$%e 0I 2. flag %oolean. )'8IN 184 nt5e/tend(@). d%$sNoutput5putNline(=Count I = XX nt5!ount). if nt5li$it is null then d%$sNoutput5putNline(=No li$it to Nested Ta%les=). else d%$sNoutput5putNline(=Li$it I = XX nt5li$it). end if. fo i in 255nt5!ount loop fo K in 255nt5!ount loop nt(i)(K) 0I !h(!). ! 0I ! H 2. if ! I T2 then ! 0I TW. end if. end loop. end loop. d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop fo K in 255nt5!ount loop d%$sNoutput5putNline(=ntO= XX i XX =PO= XX K XX =P I = XX nt(i)(K)). end loop. end loop. d%$sNoutput5putNline(=Bist inde/ I = XX nt5fist). d%$sNoutput5putNline(=Last inde/ I = XX nt5last). d%$sNoutput5putNline(=Ne/t inde/ I = XX nt5ne/t(1)). d%$sNoutput5putNline(=Aevious inde/ I = XX nt5pio(4)). flag 0I nt5e/ists(1). if flag I tue then d%$sNoutput5putNline(=Inde/ 1 e/ists=). else d%$sNoutput5putNline(=Inde/ 1 e/ists=). end if. nt5e/tend(1). nt(2)(C) 0I =Q=. nt(2)(D) 0I =R=. nt(1)(C) 0I =S=. nt(1)(D) 0I =T=. 185 nt(4)(C) 0I =U=. nt(4)(D) 0I =9=. nt(@)(C) 0I =6=. nt(@)(D) 0I =+=. nt(C)(2) 0I =*=. nt(C)(1) 0I =Z=. nt(C)(4) 0I =a=. nt(C)(@) 0I =%=. nt(C)(C) 0I =!=. nt(C)(D) 0I =d=. nt(D)(2) 0I =e=. nt(D)(1) 0I =f=. nt(D)(4) 0I =g=. nt(D)(@) 0I =h=. nt(D)(C) 0I =i=. nt(D)(D) 0I =K=. d%$sNoutput5putNline(=(fte e/tend of one inde/# Count I = XX nt5!ount). d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop fo K in 255nt5!ount loop d%$sNoutput5putNline(=ntO= XX i XX =PO= XX K XX =P I = XX nt(i)(K)). end loop. end loop. nt5ti$. d%$sNoutput5putNline(=(fte ti$ of one inde/e# Count I = XX nt5!ount). nt5ti$(1). d%$sNoutput5putNline(=(fte ti$ of two inde/es# Count I = XX nt5!ount). d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop fo K in 255nt5!ount loop d%$sNoutput5putNline(=ntO= XX i XX =PO= XX K XX =P I = XX nt(i)(K)). end loop. end loop. nt5delete(1). d%$sNoutput5putNline(=(fte delete of se!ond inde/# Count I = XX nt5!ount). d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). loop 186 e/it when v I @. fo K in 255nt5!ountH2 loop d%$sNoutput5putNline(=ntO= XX v XX =PO= XX K XX =P I = XX nt(v)(K)). end loop. v 0I v H 2. if vI 1 then v 0I 4. end if. end loop. nt5delete. d%$sNoutput5putNline(=(fte delete of entie nested ta%le# Count I = XX nt5!ount). 'ND. Output0 Count I @ No li$it to Nested Ta%les N'ST'D T()L' 'L'M'NTS ntO2PO2P I ( ntO2PO1P I ) ntO2PO4P I C ntO2PO@P I D ntO1PO2P I ' ntO1PO1P I B ntO1PO4P I 8 ntO1PO@P I : ntO4PO2P I I ntO4PO1P I > ntO4PO4P I F ntO4PO@P I L ntO@PO2P I M ntO@PO1P I N ntO@PO4P I O ntO@PO@P I A Bist inde/ I 2 Last inde/ I @ Ne/t inde/ I 4 Aevious inde/ I 1 Inde/ 1 e/ists 187 (fte e/tend of one inde/# Count I D N'ST'D T()L' 'L'M'NTS ntO2PO2P I ( ntO2PO1P I ) ntO2PO4P I C ntO2PO@P I D ntO2POCP I Q ntO2PODP I R ntO1PO2P I ' ntO1PO1P I B ntO1PO4P I 8 ntO1PO@P I : ntO1POCP I S ntO1PODP I T ntO4PO2P I I ntO4PO1P I > ntO4PO4P I F ntO4PO@P I L ntO4POCP I U ntO4PODP I 9 ntO@PO2P I M ntO@PO1P I N ntO@PO4P I O ntO@PO@P I A ntO@POCP I 6 ntO@PODP I + ntOCPO2P I * ntOCPO1P I Z ntOCPO4P I a ntOCPO@P I % ntOCPOCP I ! ntOCPODP I d ntODPO2P I e ntODPO1P I f ntODPO4P I g ntODPO@P I h ntODPOCP I i 188 ntODPODP I K (fte ti$ of one inde/e# Count I C (fte ti$ of two inde/es# Count I 4 N'ST'D T()L' 'L'M'NTS ntO2PO2P I ( ntO2PO1P I ) ntO2PO4P I C ntO1PO2P I ' ntO1PO1P I B ntO1PO4P I 8 ntO4PO2P I I ntO4PO1P I > ntO4PO4P I F (fte delete of se!ond inde/# Count I 1 N'ST'D T()L' 'L'M'NTS ntO2PO2P I ( ntO2PO1P I ) ntO2PO4P I C ntO4PO2P I I ntO4PO1P I > ntO4PO4P I F (fte delete of entie nested ta%le# Count I 3 '/40 D'CL(R' t7pe t2 is ta%le of va!ha(1) inde/ %7 %ina7Nintege. t7pe t1 is ta%le of t2 inde/ %7 %ina7Nintege. i%t t1. flag %oolean. )'8IN d%$sNoutput5putNline(=Count I = XX i%t5!ount). if i%t5li$it is null then d%$sNoutput5putNline(=No li$it to Inde/"%7 Ta%les=). else d%$sNoutput5putNline(=Li$it I = XX i%t5li$it). end if. i%t(2)(2) 0I =a=. i%t(@)(C) 0I =%=. 189 i%t(C)(2) 0I =!=. i%t(D)(1) 0I =d=. i%t(G)(4) 0I =e=. i%t(4)(@) 0I =f=. d%$sNoutput5putNline(=IND'+")* T()L' 'L'M'NTS=). d%$sNoutput5putNline(=i%t(O2PO2P I = XX i%t(2)(2)). d%$sNoutput5putNline(=i%t(O@POCP I = XX i%t(@)(C)). d%$sNoutput5putNline(=i%t(OCPO2P I = XX i%t(C)(2)). d%$sNoutput5putNline(=i%t(ODPO1P I = XX i%t(D)(1)). d%$sNoutput5putNline(=i%t(OGPO4P I = XX i%t(G)(4)). d%$sNoutput5putNline(=i%t(O4PO@P I = XX i%t(4)(@)). d%$sNoutput5putNline(=Bist Inde/ I = XX i%t5fist). d%$sNoutput5putNline(=Last Inde/ I = XX i%t5last). d%$sNoutput5putNline(=Ne/t Inde/ I = XX i%t5ne/t(4)). d%$sNoutput5putNline(=Aio Inde/ I = XX i%t5pio(G)). i%t(2)(1) 0I =g=. i%t(2)(4) 0I =h=. i%t(2)(@) 0I =i=. i%t(2)(C) 0I =&=. i%t(2)(D) 0I =l=. i%t(2)(W) 0I =$=. i%t(2)(G) 0I =n=. d%$sNoutput5putNline(=Count I = XX i%t5!ount). d%$sNoutput5putNline(=IND'+")* T()L' 'L'M'NTS=). fo i in 255G loop d%$sNoutput5putNline(=i%tO2PO= XX i XX =P I = XX i%t(2)(i)). end loop. d%$sNoutput5putNline(=i%t(O@POCP I = XX i%t(@)(C)). d%$sNoutput5putNline(=i%t(OCPO2P I = XX i%t(C)(2)). d%$sNoutput5putNline(=i%t(ODPO1P I = XX i%t(D)(1)). d%$sNoutput5putNline(=i%t(OGPO4P I = XX i%t(G)(4)). d%$sNoutput5putNline(=i%t(O4PO@P I = XX i%t(4)(@)). flag 0I i%t5e/ists(4). if flag I tue then d%$sNoutput5putNline(=Inde/ 4 e/ists=). else d%$sNoutput5putNline(=Inde/ 4 e/ists=). 190 end if. i%t5delete(2). d%$sNoutput5putNline(=(fte delete of fist inde/# Count I = XX i%t5!ount). i%t5delete(@). d%$sNoutput5putNline(=(fte delete of fouth inde/# Count I = XX i%t5!ount). d%$sNoutput5putNline(=IND'+")* T()L' 'L'M'NTS=). d%$sNoutput5putNline(=i%t(OCPO2P I = XX i%t(C)(2)). d%$sNoutput5putNline(=i%t(ODPO1P I = XX i%t(D)(1)). d%$sNoutput5putNline(=i%t(OGPO4P I = XX i%t(G)(4)). d%$sNoutput5putNline(=i%t(O4PO@P I = XX i%t(4)(@)). i%t5delete. d%$sNoutput5putNline(=(fte delete of entie inde/"%7 ta%le# Count I = XX i%t5!ount). 'ND. Output0 Count I 3 No li$it to Inde/"%7 Ta%les IND'+")* T()L' 'L'M'NTS i%t(O2PO2P I a i%t(O@POCP I % i%t(OCPO2P I ! i%t(ODPO1P I d i%t(OGPO4P I e i%t(O4PO@P I f Bist Inde/ I 2 Last Inde/ I G Ne/t Inde/ I @ Aio Inde/ I D Count I D IND'+")* T()L' 'L'M'NTS i%tO2PO2P I a i%tO2PO1P I g i%tO2PO4P I h i%tO2PO@P I i i%tO2POCP I & i%tO2PODP I l i%tO2POWP I $ i%tO2POGP I n 191 i%t(O@POCP I % i%t(OCPO2P I ! i%t(ODPO1P I d i%t(OGPO4P I e i%t(O4PO@P I f Inde/ 4 e/ists (fte delete of fist inde/# Count I C (fte delete of fouth inde/# Count I @ IND'+")* T()L' 'L'M'NTS i%t(OCPO2P I ! i%t(ODPO1P I d i%t(OGPO4P I e i%t(O4PO@P I f (fte delete of entie inde/"%7 ta%le# Count I 3 '/40 D'CL(R' t7pe t2 is ta%le of va!ha(1) inde/ %7 %ina7Nintege. t7pe t1 is ta%le of t2 inde/ %7 %ina7Nintege. t7pe t4 is ta%le of t1. nt t4 0I t4(). ! nu$%e 0I DC. )'8IN nt5e/tend(1). d%$sNoutput5putNline(=Count I = XX nt5!ount). fo i in 255nt5!ount loop fo K in 255nt5!ount loop fo & in 255nt5!ount loop nt(i)(K)(&) 0I !h(!). ! 0I ! H 2. end loop. end loop. end loop. d%$sNoutput5putNline(=N'ST'D T()L' 'L'M'NTS=). fo i in 255nt5!ount loop fo K in 255nt5!ount loop fo & in 255nt5!ount loop d%$sNoutput5putNline(=ntO= XX i XX =PO= XX K XX =PO= XX & XX =P I = XX 192 nt(i)(K)(&)). end loop. end loop. end loop. 'ND. Output0 Count I 1 N'ST'D T()L' 'L'M'NTS ntO2PO2PO2P I ( ntO2PO2PO1P I ) ntO2PO1PO2P I C ntO2PO1PO1P I D ntO1PO2PO2P I ' ntO1PO2PO1P I B ntO1PO1PO2P I 8 ntO1PO1PO1P I : 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%Ke!t(hno nu$%e(1)#!it7 va!ha(23)).? SQL- sele!t E fo$ e$plo7. 'N(M' >O) (DDR'SS(:NO# CIT*) """""""""" """""""""" """"""""""""""""""""""""""""" RanKit !le& (DDR(22# =h7d=) Satish $anage (DDR(11# =%ang=) 193 Sinu enginee (DDR(44# =&o!hi=) '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 194 '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 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/!eptionNna$e then SeVuen!eNofNstate$ents. 6hen e/!eptionNna$e then SeVuen!eNofNstate$ents. 6hen othes then SeVuen!eNofNstate$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). 195 vN$a&s nu$%e. !uso ! is sele!t E fo$ student. t7pe t is vaa7(4) of va!ha(1). va t 0I t(=a=#=%=). va2 t. )'8IN "" NOND(T(NBOUND )'8IN sele!t s$a&s into vN$a&s fo$ student whee sno I C3. '+C'ATION when noNdataNfound then d%$sNoutput5putNline(=Invalid student nu$%e=). 'ND. "" CURSORN(LR'(D*NOA'N )'8IN open !. open !. '+C'ATION when !usoNalead7Nopen then d%$sNoutput5putNline(=Cuso is alead7 opened=). 'ND. "" IN9(LIDNCURSOR )'8IN !lose !. open !. !lose !. !lose !. '+C'ATION when invalidN!uso then d%$sNoutput5putNline(=Cuso is alead7 !losed=). 'ND. "" TOONM(N*NRO6S )'8IN sele!t s$a&s into vN$a&s fo$ student whee sno - 2. '+C'ATION when tooN$an7Nows then d%$sNoutput5putNline(=Too $an7 values ae !o$ing to $a&s vaia%le=). 'ND. "" Z'RONDI9ID' )'8IN 196 a 0I C?3. '+C'ATION when UeoNdivide then d%$sNoutput5putNline(=Divided %7 Ueo " invalid opeation=). 'ND. "" 9(LU'N'RROR )'8IN % 0I =sað=. '+C'ATION when valueNeo then d%$sNoutput5putNline(=Invalid sting length=). 'ND. "" IN9(LIDNNUM)'R )'8IN inset into student values(=a=#=sinu=#233). '+C'ATION when invalidNnu$%e then d%$sNoutput5putNline(=Invalid nu$%e=). 'ND. "" SU)SCRIATNOUTSID'NLIMIT )'8IN va(@) 0I =!=. '+C'ATION when su%s!iptNoutsideNli$it then d%$sNoutput5putNline(=Inde/ is geate than the li$it=). 'ND. "" SU)SCRIATN)'*ONDNCOUNT )'8IN va(4) 0I =!=. '+C'ATION when su%s!iptN%e7ondN!ount then d%$sNoutput5putNline(=Inde/ is geate than the !ount=). 'ND. "" COLL'CTIONNISNNULL )'8IN va2(2) 0I =a=. '+C'ATION when !olle!tionNisNnull then d%$sNoutput5putNline(=Colle!tion is e$pt7=). 'ND. "" 'ND. 197 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 Ueo " 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 '/10 D'CL(R' ! nu$%e. )'8IN ! 0I C?3. '+C'ATION when UeoNdivide then d%$sNoutput5putNline(=Invalid Opeation=). when othes then d%$sNoutput5putNline(=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. 198 )'8IN aise e. '+C'ATION when e then d%$sNoutput5putNline(=e is aised=). 'ND. Output0 e is aised 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 Quse"deifned e/!eptionR5 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. vNdna$e va!ha(23). )'8IN "" US'R"D'BIN'D '+C'ATION )'8IN aise e. '+C'ATION when e then d%$sNoutput5putNline(SQLCOD' XX = = XX SQL'RRM). 'ND. "" AR'D'BIN'D '+C'ATION )'8IN sele!t dna$e into vNdna$e fo$ dept whee deptno I C3. '+C'ATION when noNdataNfound then d%$sNoutput5putNline(SQLCOD' XX = = XX SQL'RRM). 'ND. 'ND. Output0 2 Use"Defined '/!eption 233 OR("32@340 no data found '/10 199 )'8IN d%$sNoutput5putNline(SQL'RRM(233)). d%$sNoutput5putNline(SQL'RRM(3)). d%$sNoutput5putNline(SQL'RRM(2)). d%$sNoutput5putNline(SQL'RRM("233)). d%$sNoutput5putNline(SQL'RRM("C33)). d%$sNoutput5putNline(SQL'RRM(133)). d%$sNoutput5putNline(SQL'RRM("T33)). '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!tIRD)MS. fa!ilit7IOR( "1330 non"OR(CL' e/!eption OR("33T330 invalid SQL state$ent '+C'ATIONNINIT 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'ATIONNINIT(e&ception_name# oracle_error_number). '/0 D'CL(R' e e/!eption. pag$a e/!eptionNinit(e#"2@WD). ! nu$%e. )'8IN ! 0I C?3. '+C'ATION when e then d%$sNoutput5putNline(=Invalid Opeation=). 'ND. Output0 Invalid Opeation 200 R(IS'N(AALIC(TIONN'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'N(AALIC(TIONN'RROR(error_number# error_messae## Okeep_errors_%laP). The )oolean paa$ete keep_errors_%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 ! 0I C?3. '+C'ATION when UeoNdivide then aiseNappli!ationNeo("13111#=Invalid Opeation=). 'ND. Output0 D'CL(R' E 'RROR at line 20 OR("131110 Invalid Opeation OR("3DC210 at line W '+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 201 when e then d%$sNoutput5putNline(=e is aised=). '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) 0I =a%!d=. )'8IN d%$sNoutput5putNline(=:ello=). '+C'ATION when othes then d%$sNoutput5putNline(=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' 202 ! nu$%e(4) 0I =a%!d=. )'8IN d%$sNoutput5putNline(=:ello=). '+C'ATION when othes then d%$sNoutput5putNline(=Invalid sting length=). 'ND. '+C'ATION when othes then d%$sNoutput5putNline(=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%$sNoutput5putNline(=e2 is aised=). aise e1. when e1 then d%$sNoutput5putNline(=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 T 203 OR("3DC230 AL?SQL0 unhandled use"defined e/!eption '/10 D'CL(R' e2 e/!eption. e1 e/!eption. )'8IN )'8IN aise e2. '+C'ATION when e2 then d%$sNoutput5putNline(=e2 is aised=). aise e1. when e1 then d%$sNoutput5putNline(=e1 is aised=). 'ND. '+C'ATION when e1 then d%$sNoutput5putNline(=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%$sNoutput5putNline(=e is aised=). aise e. 'ND. Output0 e is aised D'CL(R' E 204 'RROR at line 20 OR("3DC230 AL?SQL0 unhandled use"defined e/!eption OR("3DC210 at line G OR("3DC230 AL?SQL0 unhandled use"defined e/!eption 205
Data Definition Language (DDL) Data Manipulation Language (DML) Data Retrieval Language (DRL) Transaction Control Language (TCL) Data Control Language (DCL)