Está en la página 1de 39

Introduccin a Oracle SQL y PL/SQL

Introduccin
Se transforma requerimientos del negocio dentro de una base de datos operacional.
Estrategia y anlisis Diseo Construccin y documentacin Transicin
Produccin
Una D es una coleccin de informacin organi!ada" #ay $ tipos herarquica, red,
relacional y relacional de objetos
Concepto de BD relacional
Coleccin de ob%etos o relaciones
Un grupo de operadores pueden actuar en las relaciones para producir otras relaciones
&ntegridad de los datos para e'actitud y consistencia
Definicin de una BD relacional
Es una coleccin de relaciones o tablas en dos dimensiones
Modelos de datos
Son la piedra angular del diseo ayudan a entender lo que quiere el cliente.
Modelos ER
(os datos son di)ididos dentro de categor*as discretas o entidades" un modelo de
relacin entre entidades es una ilustracin de )arias entidades en el negocio y la
relacin entre estas" los modelos separan la informacin requerida por los negocios de
las acti)idades de estos .
Componentes
Entidad + ,b%eto que representa la informacin que se necesita
-tributo + Describe o califica la entidad
.elacin + -sociacin entre entidades mostrando opcionalidad y grado/cardinalidad0.
Identificadores unicos
Son una combinacin de atributos o relaciones o ambos " este #ace que cada
ocurrencia de una entidad sea unica S*mbolo 1" secundario /10
Relacionando multiples tablas
Cada tabla contiene datos que describen e'actamente una entidad" las categor*as de
los datos son listados en los atributos y los casos indi)iduales en las filas.
(as lla)es forneas son basadas en )alores de datos y son puramente lgicos" no
fisicos" apuntadores.
Propiedades de una BD realacional
Puede ser accedida y modificada con sentencias structured query language /S2(0 el
cual permite comunicarse con el ser)idor
Contiene una coleccin de tablas
Usa un grupo de operadores
istema de BD relacional
Se puede almacenar y administrar datos con todas las )enta%as de la estructura
relacional P(3S2(
!racle " # istema de administracin de BD realiconales de objetos
Pro)ee una nue)a maquina que trae programacin orientada a ob%etos" tipos de datos
comple%os" ob%etos de negocio comple%os y total compatibiliad con el mundo
relacional.
Usuario define tipos de datos y ob%etos
Soporta ob%etos grandes y multimedia
!racle "i # BD en plataforma internet
Contiene #erramientas a)an!adas para administrar todos los tipos de datos en 4eb
sites.
i5S &nternet 5ile System combina el poder de ,racle 6i con el facil uso de un 5S" los
usuarios pueden fcilmente acceder a los arc#i)os y folders en un i5S usando una
)ariedad de protocolos como 7T8(" 5TP" &8-P$ .
,racle 6i incluye una robusta" integrada y escalable maquina )irtual de %a)a dentro
del ser)idor 9ser)er
,6i pro)ee full integracin con 8icrosoft Transaction Ser)er /8TS0
Plataforma de internet !racle
Para e:commerce y data 4are#ousing es construida en ; pie!as principales
<. Clientes ro4ser based para procesar presentacin
=. Ser)idores de aplicacin para e%ecutar logica de los negocios y logica de la
presentacin para clientes bro4ser:based
;. ases de datos para e%ecutar logica de negocios intensi)a y ser)icio de datos
entencias $%
E%EC& .ecuperacin de datos
I'ER& D8(
(PD)&E
DE%E&E
CRE)&E DD(
)%&ER
DR!P
RE')ME
&R('C)&E
C!MMI& Control transaccional
R!%%B)C*
)+EP!I'&
,R)'& (engua%e de control de datos /DC(0
RE+!*E
-acerca de P%.$% Es una e'tencin de S2( " la manipulacin de datos y las
sentencias de consulta de S2( son incluidas dentro de unidades de codigo
procedimentales
)mbiente P%.$% Un bloque P(3S2( es procesado por la maquina P(3S2( la cual
puede residir dentro de la #erramienta o dentro del ser)idor.
Cuando se in)oca P(3S2( desde un programa" S2( >Plus o ser)er manager" lo
procesa el ser)idor " este separa las sentencias S2( y las en)ia indi)idualmente al
e%ecutor de sentencias S2(
=
P(3S2(
(,C?
E%ecutor de sentencias
procedimentales
E9ECUT,. DE SE@TE@C&-S S2(
8aquina P(3S2(
Ser)idor ,racle
P(3S2(
(,C?
Capitulo 1 escribiendo sentencias SQL basicas
Capacidades de las sentencias $%
Se recupera informacin usando SE(ECT #aciendo.
Seleccin + Para elegir filas de una tabla
Proyeccin + Elegir columnas
9oin + Trae datos almacenados en diferentes tablas
SE(ECT AD&ST&@CTB />" column AaliasB0
5.,8 tableC
Escribiendo sentencias $%
Sentencia S2( pueden ser entradas en una o mas lineas
(as palabras cla)e no pueden ser di)ididas atra)e! de lineas
Dentro de S2(>Plus una sentencia S2( es entrada en el prompt" y las lineas
siguientes son numeradas " esto se llama S2( buffer
Para seleccionar todas las filas con > o enuncindolas todas en el SE(ECT.
Encabe/ados por default de las columnas
9ustificacin + 5ec#a y caracteres a la i!quierda" @umeros a la derec#a
Default + 8ayDsculas
E0presiones aritm1ticas Pueden contener operadores aritmEticos F : 3 >
'ota # S2(>Plus ignora espacios en blanco antes y despuEs del operador
Precedencia de operadores > 3 F : " operadores de la misma precedencia son
e)aluados de i!quierda a derec#a" los parEntesis alteran la precedencia.
Definiendo 2alores '(%% Es diferente de cero /numero 0 espacio /carcter0 " es
una)ailable" unassigned" unGno4" en e'presiones aritmEticas toda se )uel)e @U((.
Definiendo alias .enombra el encabe!ado de la columna" sigue al nombre de la
columna -S es opcional" se requiere comillas dobles si tiene espacios o caracteres
especiales" Para que el alias no salga en mayDsculas encerrarlo en comillas dobles.
!perador de concatenacin H H Se combinan las columnas para que #aya una sola
salida.
SE(ECT enameHH%ob -S IEmployesJ
5.,8 empC
trin3s de caracteres literales Un literal es un carcter" numero o fec#a incluido en
el SE(ECT.
Deben ser encerrados en comillas simples
Cada literal sale una )e! por cada fila retornada
SE(ECT ename H H K is a K H H %ob -S IEmplye DetailsJ
5.,8 empC
Eliminar filas duplicadas D&ST&@CT " U@&2UE
Interaccin de $% y $%4Plus
S2( es un lengua%e de comandos para comunicarse con el ser)idor" cuando se entra
una sentencia" esta se almacena como parte de la memoria llama S2( buffer y a#* se
mantiene mientras no se entre otra sentencia.
;
S2(>Plus Es una #erramienta que reconoce y e%ecuta sentencias S2(" acepta
entradas S2( de arc#i)os" pro)ee un editor para modificar sentencias S2(" controla
el ambiente.
$% $%4Plus
(engua%e .econoce sentencias S2(
Es -@S& &nterfa! propietaria de
,racle para e%ecutar sentencias S2(
8anipula datos y definiciones de tablas @o manipula )alores en la D
2ueda en un buffer S2( Es entrado linea a linea al tiempo" no es
-lmacenado en el S2( buffer
@o tiene carcter de continuacin Si tiene /:0
@o puede ser abre)iado Si puede ser abre)iado
Usa carcter de terminacin Se e%ecuta inmediatamente
Usa funciones para formatear datos Usa comandos para formatear
S2(>Plus
Cate3or5a Propsito
En)ironment -fecta en general todas las sentencias S2( para la sesin
5ormat 5ormatea resultados de la consulta
5ile 8anipulatin Sa)es" (oads y corre arc#i)os de scripts
E'ecutin En)ia sentencias S2( del buffer al ser)idor
Edit 8odifica sentencias S2( en el buffer
&nteraccin Permite que se pase y se cree )ariables para sentencias S2(
8iscellaneous Contiene )arios comandos para conectarse a la D" manipular
el ambiente y desplegar definiciones de columnas
DESCA.&EB tablename
Comandos de edicin de $%4Plus
Comando Descripcin
-APPE@DB te't -diciona te'to al final de la linea corriente
CA7-@LUEB te't3old3ne4 Cambia te'to )ie%o por nue)o en la linea corrienta
CA7-@LUEB 3te't3 orra te'to de la linea corriente
C(AE-.B U55AE.B orra todas las lineas del S2( buffer
DE( orra la linea corriente
&A@PUTB &nserta un numero indefinido de lineas
&A@PUTB te't &nserta una linea con el te'to
(A&STB (ista todas las lineas en el S2( buffer
(A&STB n (ista la linea n
(A&STB m n (ista las lineas entre m y n
@ Especifica la linea a ser la linea corriente
n te't .eempla!a la linea n con el te'to
M te't &nserta una linea antes de la linea <
Command Descripcin
S-NAEB filename A.e'tB Sal)a las lineas corrientes del S2( buffer a un arc#i)o
A.EPA(-CEB-PPAE@DBB
LET filenameA.e'tB Trae un arc#i)o sal)ado al S2( buffer
ST-A.TB filenameA.e'tB
Ofilename
EDA&TB &n)oca al editor y sal)a el buffer corriente en afiedt.buf
ED&T A5ilenameA.e'tBB
SP,A,(B AfilanameA.e'tBB
,55H,UT
EP&T
$
Capitulo 2 Restringiendo y ordenando datos
Se usa la clausula Q7E.E para restringir datos" Comparando )alores de columnas"
literales" e'presiones aritmEticas y funciones.
6echas y cadenas de caracteres
Son encerrados en columnas simples" los caracteres son sensiti)os" el formato por
default de las fec#as es DD:8,@:RRRR
SE(ECT ename
5.,8 emp
Q7E.E ename S K9-8ESTC
ETQEE@ + Desplegar un rango de )alores
&@ + Para comparar con una lista
(&?E + Comparar con un patrn de caracteres" usar comodines U" V " se pueden
combinar los comodines. Se puede usar la opcin de ESC-PE.
SE(ECT > 5.,8 dept Q7E.E dname (&?E KUWVUT ESC-PE K W K C
&S @U(( + Para encontrar )alores @U((" no se pueden encontrar con S
!peradores l3icos
-@D + @U(( and 5-(SE S 5-(SE
,. + @U(( and T.UE S T.UE
@,T + @U(( and T.UE S @U((
Re3las de precedencia
< todos los operadores de comparacin" = @,T " ; -@D y $ ,." se alteran con
parEntesis.
,.DE. R + Para ordenar -SC" DESC"si no se usa el oreden es indefinido" se
pueden organi!ar resultados por mas de una columna.
X
Capitulo 3 Funciones de una sola ila
-ceptan argumentos y siempre retornan )alores.
7ay = tipos
<. De una sola fila + ,peran en una sola fila y retornan un solo )alor por fila
Carcter + -ceptan caracteres y retornan )alores de caracteres o numeros
@umEricas + -ceptan numeros y retornan numeros
5ec#as + -ceptan fec#as retronan fec#as e'cepto 8,@T7SVETQEE@
Con)ersin + Con)ierten un )alor de un tipo a otro
Leneral + @N(" DEC,DE
=. De multiples filas + 8anipulan un grupo de filas y dan un resultado por cada
grupo
8anipulan items de datos" los argumentos pueden ser Constantes" Nariables"
Columnas" E'presiones. -ctuan en cada fila del query" pueden retornar )alores de un
tipo diferente al referenciado
Function_name (column H e'pression" Aarg<" arg=...B)
6unciones de caracter
7ay = tipos + De con)ersin" De manipulcin de caracteres
(,QE. /column H e'presin0 course
UPPE. /column H e'presin0 C,U.SE
&@&TC-P /column H e'presin0 Course
C,@C-T /column H e'presin" column H e'presin ...0
SUST. /column H e'presin"m"n0
(E@L7T /column H e'presin 0 + .etorna el numero de caracteres
&@ST. /column H e'presin"m0 + .etorna la posicin numErica del carcter enunciado
(P-D /column H e'presin " n "TstringT0 + Pega en n posicones un carcter %ustificando
a la derec#a
T.&8 /leading H trailing H bot#" trimVc#aracter 5.,8 trimVsource 0
T.&8 /KST 5.,8 KSS8&T7T0 S 8&T7
6unciones numericas
.,U@D /column H e'presin " n 0 + .edondea el )alor a n lugares decimales
T.U@C /column H e'presin " n 0 + Trunca la columna a n )alores decimales" si n es
omitido quita los decimales / Si es negati)o los numeros a la i!quierda del decimal
son con)ertidos a cero /M0 0
8,D /m " n 0 + .etorna el residuo de la di)isin de m entre n
.,U@D /$X.Y=; " = 0 S $X.Y=
.,U@D /$X.Y=; " M 0 S $Z
.,U@D /$X.Y=; " :< 0 S XM
T.U@C /$X.Y=; " = 0 S $X.Y=
T.U@C /$X.Y=; " M 0 S $X
T.U@C /$X.Y=; " :< 0 S $M
.,U@D y T.U@C pueden ser usadas con funciones de fec#as
&rabajando con fechas
,racle almacena las fec#as en un formato interno numerico" siglo" ao" mes" dia"
#oras" minutos" segundos
El formato default es DD [ 8,@ [ RR
SRSD-TE funcin que retorna la fec#a y el tiempo corrientes
DU-( es una tabla de SRS para cumplir con la sinta'is debido a que el SE(ECT y el
5.,8 son obligatorios.
Z
)ritm1tica con fechas
,peracin .esult Descripcin
Date F number Date -diciona un numero de dias
Date [ date @umero dias Sustrae una fec#a e otra
Date F number3=$ Date -diciona numero de #oras
6unciones de fecha
8,@T7SVETQEE@/date<"date=0 + 8eses entre las dos fec#as negati)o o positi)o
/TM<:SEPT:YXT"T<<:9-@:Y$T0 S <Y.Z\\$<Y$
-DDV8,@T7S/date"n0+ n positi)o o negati)o
/T<<:9-@:Y$T"Z0 S T<<:9U(:Y$T
@EPTVD-R/date" Kc#arT0 + Encuentra la fec#a de el pro'imo dia especificado de la
semana.
/KM<:SEPT:YXT"T5.&D-RT0 S TM6:SEPT:YXT
(-STVD-R/date0 + Encuentra el ultimo dia del mes
/TM<:SEPT:YXT0 S T;M:SEPT:YXT
.,U@D/dateA"fmtB0 + .etorna la fec#a en la unidad especificada en el format model"
si el format model es omitido la fec#a es redondeada al dia mas cercano.
.,U@D/T=X:9U(:YXT"T8,@T7T0 M<:-UL:YX
.,U@D/T=X:9U(:YXT"TRE-.T0 M<:9-@:YZ
T.U@C/dateA"fmtB0 + .etorna la fec#a con el tiempo de la porcin del dia truncada
T.U@C/T=X:9U(:YXT"T8,@T7T0 S M<:9U(:YX
T.U@C/T=X:9U(:YXT"TRE-.T0 S M<:9-@:YX
Con2ersin de tipos de datos impl5cita
Para e)aluacin de e'presiones
N-.C7-.= o C7-. @U8E.
N-.C7-.= o C7-. D-TE
::::
@U8E. N-.C7-.=
D-TE N-.C7-.=
Con2ersin e0plicita
T,VC7-./number H date"AfmtB"AnlsparamsB0 + nlsparams especifica caracterdecimal"
separador de grupo" simbolo de moneda local" simbolo de moneda internacional o las
abre)iaciones para el dia el mes " tiene un elemento fm para remo)er blancos o
suprimir ceros
T,V@U8E./c#ar"AfmtB"AnlsparamsB0 + Con)ierte un string de caracteres que
continen digitos a un numero en el formato especificado.
T,VD-TE/c#ar"AfmtB"AnlsparamsB0 + Si fmt es omitido se usa el default DD:8,@:
RR
Elementos del modelo del formato de fecha
RRR
RE-.
88 8es en dos digitos
8,@T7 @ombre completo del mes
DR -bre)iacin de tres letras para el dia de la semana
D-R
SCC o CC Siglos S prefi%o C con [
&RRR"&RR"&R"& $" ; "= < digito del ao basado en el standard &S,
.8 mes en numeros romanos
QQ o Q semana del ao o del mes
DDD o DD o D dia del ao" mes o semana
9 dia %uliano
77=$+8&+SS -8 <X+$X+;= P8
DD I of J 8,@T7 <= of ,CT,E.
\
@umero de sufi%os para numeros
Ddspt# fourteent#
-8 o P8 &ndicador de meridiano
-.8 o P.8 &ndicador de meridiano con periodos
77 o 77<= o 77=$ 7ora del dia u #ora /<:<=0 u #ora /M:=;0
8& 8inuto de M:XY
SS Segundo de M:XY
SSSS Segundos pasados la media noc#e /M:6Z;YY0
3. " Puntuacin es reproducida en el resultado
T7 @umero ordinario /E% DDT7 para $T70
SP E% DDSP para 5,U.
SPT7 o T7SP E% DDSPT7 para 5,U.T7
(sando funcin &!7C-)R con fechas
SE(ECT ename" T,VC7-./#iredate" KfmDD 8ont# RRRRT0
5.,8 emp
?&@L <\ @o)ember <Y6<
(sando funcin &!7C-)R con numeros
T,VC7-./number"TfmtT0
Y Determina longitud del numero YYYY <=;$
M Despliega ceros MYYY MM<=;$
] Signo flotante de dlar ]YYY ]<=;$
( S*mbolo de modena local flotante (YYY 55<=;$
. Y.YYY <.=;$
" Y"YYY Y"YYY
8& Signo menos a la derec#a YY8& <=;$:
P. ParEntesis para numeros negati)os YYP. ^<=;$_
EEEE @otacin cient*fica YY.YYYEEEE <.=;$EFM;
N 8ultiplicar por <M n )eces
/n numero de Ys despuEs de la N0 YNYY <MM
Desplegar )alores de ceros como
lancos" no M YYYY.YY <=;$.MM
SE(ECT T,VC7-./sal " K]YY"YYYT 0
5.,8 emp
];"MMM
6ormato de fecha RR
RR y .. son in)ersos
Ultimos dos digitos
.. RR
M:$Y Si ao corriente superior despuEs El siglo corriente
XM:YY Si ao corriente superior siglo antes El siglo corriente
6uncin '+%
@N( /e'pr<" e'pr= 0 con)ierte a numeros" fec#as y c#ar o )arc#ar=
6uncion DEC!DE
5acilita el traba%o condicional como el C-SE
DEC,DE /col3e'presin " searc#< " result<
A " searc#= " result= " ..... "B
A " default B
Si el default es omitido retorna @U(( si la cadena no coincide con ninguna condicin
6
SE(ECT %ob" sal"
DEC,DE/ %ob" K-@-(RSTT " S-(><.<"
KC(E.?T " S-(><.<X"
S-( 0
5.,8 empC
6unciones anidadas
5unciones de una sola fila pueden ser anidadas a cualquier ni)el " y son e)aluadas
desde la mas profunda a la menos profunda. o sea de adentro #acia fuera
Y
Capitulo ! desplegando datos de "ultiples tablas
Se traba%a #aciendo 9,&@ entre las tablas" generalmente si se tienen n tablas se
necesitan n:< %oins para la consulta" esto no es cierto todo el tiempo E%. Si la lla)e
primaria es compuesta.
Producto cartesiano
Se da cuando una condicin de 9,&@ es omitida" es in)alida" todas las filas de la
primera tabla son cru!adas con todas las filas de la segunda tabla emp <$ dept $ S XZ
&ipos de joins
Equijoin # (a columna debe ser ser igual en las dos tablas
Se utili!a el nombre de la tabla como pref%o table.columna" esto me%ora performance"
y e)ita ambig`edad si #ay columnas con el mismo nombre en tablas diferentes. Se
usan en SE(ECT" Q7E.E y ,.DE. R.
Para condiciones adicionales se utili!a los operadores como -@D.
Usando alias para las tablas
8'imo ;M caracteres
'on8equijoin # Cuando la columna de una tabla no corresponde directamente a la
columna de otra E%. ETQEE@" ^S" _S
!uter8join # Se coloca a un lado de la e'presin" no en los dos" se coloca al lado
donde no #ay informacin /F0" no puede usar el operador &@.
elf8join # Cru!ar una tabla consigo misma
<M
Capitulo # $gregando datos usando unciones de
grupo
5unciones de grupo operan en %uegos de filas para dar un resultado por grupo" estas
filas pueden ser toda la tabla o di)ididas por grupos.
&ipos de funciones de 3rupo
-NL/D&ST&@CT H -(( H n 0 Promedio de n ignorando )alores @U((" numeros
C,U@T/a> H A D&ST&@CT H -(( B e'prb 0 &ncluye nulos
8-P/ A D&ST&@CT H -(( B e'pr 0 &gnora nulos" todos los tipos de datos
8&@ /A D&ST&@CT H -(( B e'pr 0 &gnora nulos" todos los tipos de datos
STDDEN / A D&ST&@CT H -(( B'0 Des)iacin standar de n ignora nulos" numeros
SU8 / AD&ST&@CT H -(( B n 0
N-.&-@CE / AD&ST&@CT H -(( B' 0 Narian!a de n" ignora nulos
El ser)idor ,racle impl*citamente ordena los resultados ascendentemente cuando usa
L.,UP R" para cambiar el orden usar ,.DE. R.
6unciones de 3rupo y 2alores '(%%
Todas las funciones de grupo ignoran )alores @U(( en la columna e'cepto C,U@T.
Para incluir )alores @U(( se usa @N(.
SE(ECT /-NL/@N(/comm"M000
5.,8 empC
Para crear grupo L.,UP R
SE(ECT column " groupVfunction/column0
5.,8 table
AQ7E.E condition B
AL.,UP R groupVbyVe'pression B
A,.DE. R column B
Clausula ,R!(P B9
@o se puede usar los alias de las columnas
Todas las columnas que no estan en una funcin de grupo deben estar en la clausula
L.,UP R.
(as columnas del L.,UP R pueden no estar en la lista del select.
Se puede agrupar por mas de una columna" grupos dentro de los grupos.
@o se puede usar Q7E.E para restringir grupos para esto se usa 7-N&@L" filas son
agrupadas" se aplica funcion de grupo" se despliega las que coincidan con 7-N&@L.
(as funciones de grupo pueden ser anidadas a una profundidad de =.
<<
Capitulo % sub&ueries
Se pueden colocar en + Q7E.E " 7-N&@L" 5.,8
SE(ECT selectVlist
5.,8 table
Q7E.E e'p operator
/ SE(ECT select list
5.,8 table0C
(os operadores de comparacin caen en dos clases una sola fila / ^" _"S"^ _"^S"_S 0 y
multiples filas /&@" -((" -@R 0
El sub query se e%ecuta primero y su salida completa el query total.
@o adicionar una clausula ,.DE. R a un subquery.
&ipos de subqueries # De una sola fila" multiples filas" multiples columnas
Se pueden usar funciones de grupo en los subqueries
SE(ECT ename" %ob
5.,8 emp
Q7E.E sal S / SE(ECT 8&@/sal0 5.,8 emp 0C
SE(ECT deptno " 8&@/sal0
5.,8 emp
L.,UP R deptno
7-N&@L 8&@/sal0 _ /SE(ECT 8&@/sal0 5.,8 emp Q7E.E deptno S =M0C
ubqueries de multiples filas
,perador Significado
&@ &gual a cualquier miembro de la lista
-@R Compara el )alor con cada )alor retornado de la lista
-(( Compara el )alor con todos los )alores de la lista
SE(ECT empno
5.,8 emp
Q7E.E sal ^ -@R / SE(ECT sal 5.,8 emp Q7E.E %obS KC(E.?T0
-@D %ob ^_ KC(E.?TC
SE(ECT empno
5.,8 emp
Q7E.E sal _ -(( / SE(ECT -NL/sal0 5.,8 emp L.,UP R deptno0C
El operador @,T puede ser usado con -@R" &@ " -((
<=
Capitulo ' Sub&ueries de "ultiples colu"nas
SE(ECT column" ...
5.,8 table
Q7E.E /column" column" ... 0 &@ / SE(ECT column" column" ...
5.,8 table
Q7E.E condition 0C
(as comparaciones pueden ser pair4ise o nonpair4ise
SE(ECT column" ...
5.,8 table
Q7E.E column< &@ / SE(ECT column 5.,8 table Q7E.E condition 0
-@D column= &@ / SE(ECT column 5.,8 table Q7E.E condition 0C
El SE(ECT no retorna filas si se utili!a @,T &@ y en el subquery #ay un @U((
debido a que @,T &@ es eq4ui)alente a cS-((.
&@ es equi)alente S-@R
Usando un subquery en la clausula 5.,8
SE(ECT a.ename" a.sal" b.sal)g
5.,8 emp a" /SE(ECT deptno" a)g/sal0 sal)g 5.,8 emp L.,UP R deptno 0
Q7E.E a.deptno S b.deptno
<;
Capitulo ( Produciendo salidas legibles con SQL )
Plus
Con d se almacenan )alores temporalmente.
duserV)ariable &ndica una )ariable en una sentencia S2(" si la )ariable no e'iste
S2(>Plus se la pide al usuario
SET NE.&5R ,@H,55 Se usa para confirmar los cambios en la sentencia S2( " este
for!a a S2(>Plus a desplegar te'to antes y despues de reempla!ar las )ariables con
los )alores.
(as )ariables de fec#a o carcter deben ser encerradas entre comillas simples.
Se puede especificar )ariables para columnas" como condicin en el ,.DE. R " en
el from.
%a 2ariable ::
Para utili!ar la reusar la )ariable sin tener que preguntar" S2(>Plus almacena el )alor
usndole comando DE5&@E" una )e! el )alor es colocado se necesita U@DE5&@E
para resetear la )ariable.
Para definir )ariables se utili!a
DE6I'E 2ariable ; 2alue el cual crea una )ariable c#ar y asigna el )alor a esta.
DE6I'E 2ariable muestra la )ariable su )alor y su tipo de dato
DE6I'E despliega todas las )ariables del usuario
)CCEP& 2ariable <datatype= <6!RM)& format= <PR!MP& te0t = <-IDE=
(ee la linea de la entrada por el usuario y almacena esto en una )ariable en donde
Datatype + es @U8E." C7-. o D-TE /C7-. tiene una longitud m'ima de =$M
bytes
5ormat + Especifica el formato E%. -<M o Y.YYY
7ide + esconde la entrada del usuario por seguridad
En el comando -CCEPT no se le coloca d a la )ariable
&ips
DE5&@E y -CCEPT crrean la )ariable si esta no e'iste
Se debe definir e'pl*citamente un @U8E. o 5EC7- para )ariables de este tipo
DE6I'E y ('DE6I'E
(as )ariables permanecen mientras no se les de U@DE5&@E o se salga de S2(>Plus"
se puede )erificar los cambios con DE5&@E" para definir )ariables para cada sessin"
se debe modificar el arc#i)o lo3in>sql asi las )ariables son creadas en el startup
Personali/ando E% ambiente de $%4Plus
Con comandos SET
SET systemV)ariable )alue
Para )erificar los )alores seteados se usa S7,Q
S2(_SET EC7, ,@
S2(_S7,Q EC7,
Ec#o ,@
Para )er todas las )ariables
S7,Q -((
-..-R AS&eEB a=M H n bEl tamao para el fetc# de los datos
C,(SEP aV H te't bSetea el te'to a ser impreso entre columnas default es el espacio
5EDDA-C?B aZ H n H ,55 H ,@ b Despliega el numero de registros de)ueltos por
una consulta cuando selecciona por los menos n registros
7E-AD&@LB a,@ H ,55 b Determina el encabe!ado
(&@AS&eEB a6M H nb El numero de caracteres por linea
(,@L a6M H nb Setea el m'imo para desplegar )alores (,@L
P-LESA&eEB a=$ H nb @umero de lineas por pagina
P-UASEB a,55 H ,@ H te'tb controla el scroll de la terminal
<$
TE.8A,UTB a,55 H ,@ b Determina si la salida es desplegada enla pantalla
El arc#i)o lo3in>sql contiene los SET estandar y otros comandos S2(>Plus que se
implementan en el login.
C,(AU8@B Acolumn option B Controla el formato de las columnas
TT&AT(EB Ate't H,55 H ,@ B Especifica el encabe!ado de cada pagina
T&AT(EB Ate't H,55 H ,@ B Especifica el pie de cada pagina
.EA-?B A,@ reportVelement B
Si se da un alias a la columna este debe ser especificado" no el nombre de la columna
El comando C!%(M'
C,(AU8@B A acolumn H alias b A option B B
C(EA-.B limpia cualquier formato de columna
5,.A8-TB format Cambia el despliegue de una columna usando el formato
7E-AD&@LB te't Setea el encabe!ado de la columna / una barra )ertical /H0 for!a un
line feed 0
9USAT&5RB aalingb 9ustifica el encabe!ado de la columna derec#a" i!q o centro
@,P.&A@TB no imprime la columna
@U(A(B te't Especifica el te'to a ser desplegado para )alores @U((
P.&A@TB muestra la columna
T.UA@C-TEDB Trunca el string al final de la primera linea desplegada
Q.-APPEDB
C,(U8@ ename 7E-D&@L KEmployeeHnameT 5,.8-T -<X
C,(U8@ sal 9UST&5R (E5T 5,.8-T ]YY"YYY.MM
C,(U8@ mgr 5,.8-T YYYYYYY @U(( Kno managerT
C,(AU8@B ename Despliega los )alores corrientes para una columna
C,(AU8@B ename C(EA-.B (impia los )alores seteados para la columna
C(EA-.B C,(AU8@B (impia los )alores seteados para todas las columnas
Si se tiene un comando muy largo se puede continuar colocando /:0
Modelos de formato de columnas
)n despliega un anc#o n
? Solo digitos YYYY <=;$
@ 5uer!a al cero lider MYYYYY M<=;$
A S*mbolo de dlar ]YYYY ]<=;$
% 8oneda local (YYYY (<=;$
>
,
El ser)idor ,racle despliega /10 si el numero e'cede el tamao dado en el formato"
tambien si el )alor e alfanumerico mientras el actual es numerico
BRE)* !' ename !' job Suprime duplicados para asegurar que traba%a
correctamente usar ,.DE. R.
BRE)* !' ename *IP B !' job *IP C
.E-? on column A HaliasHro4 B AsGip n H dup H page B on .. Aon report B
Donde
page Tira una nue)a pagina cuando el )alor del breaG cambia
sGip n Salta un numero de lineas cuando el )alor cambia
breaG se acti)a con columna" fila " pagina" reporte
duplicate despliega )alores duplicados
Para limpiar todos los %uegos de .E-? usar C(E-.
C(E-. .E-?
<X
Capitulo * +anipulando datos
Una transaccin consiste en un grupo de sentencias D8( que forman una unidad
logica de traba%o.
Para insertar nulos impl*citamente omitir la columna" e'pl*citamente colocar K@U((T
y K K Para caracteres y fec#as.
Para insertar )alores especiales como fec#as el formato KDD:8,@:RRRRT debe ser
usado de lo contrario se cambia con la funcion T,VD-TE. R el tiempo default es
MM+MM+MM. Si se setea el formato .. el siglo puede no ser el corriente.
Se puede insertar )alores usando )ariables de sustitucin.
&@SE.T &@T, dept /deptno" dname 0
N-(UES / ddepartment" dname 0C
Estos le sern pedidos al usuario al momento de e%ecutar la sentencia. Se puede usar
-CCEPT.
Se puede #acer &@SE.T en una tabla de datos de otra con un subquerie.
Para actuali!ar datos con UPD-TE.
Para actuali!ar datos con subqueries de multiples columnas.
UPD-TE emp
SET /%ob" deptno 0 S / SE(ECT %ob" deptno 5.,8 emp Q7E.E empno S \Y66 0
Q7E.E empno S \ZY6C
Se puede borrar filas de una tabla basado en )alores de otra.
DE(ETE 5.,8 employ
Q7E.E deptno S / SE(ECT deptno 5.,8 dept Q7E.E dname S KS-(EST0C
&ransacciones de BD
Consiste de .
Lrupo de D8(s
Un DD(
Un DC(
(as transacciones dan mas fle'ibilidad y control y aseguran consistencia en el caso de
que el proceso el sistema fallen.
Controlando transacciones
C,88&T" S-NEP,&@T name" .,((-C? AT, S-NEP,&@T nameB
Procesamiento implicito de transacciones
Un C,88&T se da cuando #ay DD(" DC( o se sale normalmente de S2(>Plus.
Un .,((-C? se da cuando #ay una salida anormal de S2(>Plus o falla el sistema
E'iste el comando -UT,C,88&T ,55H,@.
-ntes de C,88&T o .,((-C?" las filas afectadas son bloqueadas para que no
sean cambiadas.
DespuEs del C,88&T las filas bloqueadas son liberadas" todos los sa)epoints son
borrados.
Se puede #acer marcas S-NEP,&@T para el .,((-C?. Si se crea un segundo
S-NEP,&@T con el mismo nombre el primero es desacrtado.
El ser)idor ,racle implementa un S-NEP,&@T impl*cito.
<Z
Si un DD( falla" el usuario no puede )ol)er a los datos anteriores porque este tiene
autocommit.
Consistencia de lectura
Laranti!a una )ista consistente de los datos todo el tiempo.
Cambios #ec#os por un usuario no tienen conflicto con los cambios #ec#ospor otro
usuario.
El propsito es asegurar que cada usuario mire los datos como estaban con el ultimo
C,88&T" antes de que la operacin D8( arrancara.
El (,C?&@L es efecti)o debido a que pre)iene acciones destructi)as entre
operaciones concurrentes.
@o requiere accin de l usuario
Usa el ni)el mas ba%o de restriccin.
Permanece por el tiempo que dure la transaccin.
Tiene dos modos E'clusi)e + Pre)iene que un recurso sea compartido la primera
transaccin bloquea el recurso e'clusi)amente y S#ared
<\
Capitulo 1, Creando y ad"inistrando tablas
Tabla Unidad basica de almacenamiento
Nista .epresentan un subgrupo de datos de una o mas tablas
Secuencia Lenera )alores para P?
&nde' 8e%ora performance
Sinnimo Da nombres alternati)os a los ob%etos
El tamao de una tabla es definido por la cantidad de espacio asignado. El nombre
debe comen!ar por una letra" <:;M caracteres " -:e" a:!" M:Y" V"] y 1
Create table
Se debe tener el pri)ilegio C.E-TE T-(E" es un DD( estos tienen un efecto
inmediato en la D y graban informacin en el diccionario de datos.
C.E-TE A L(,-( TE8P,.-.R B T-(E Asc#ema.Btable
/column datatype ADE5-U(T e'pr B A" .... B0C
L(,-( TE8P,.-.R + (a tabla es temporal y su definicin es )isible para todas
las sesiones" los datos de esta son )isibles solo para la sesin que inserta datos.
DE5-U(T e'pr + Especifica el )alor por default si este es omitido en el &@SE.T"
e'pr puede ser un )alor literal" e'presin o una funcin S2(.
Hiredate DATE DEFAULT SYSDATE, ....
Un esquema es una coleccin de ob%etos" los ob%etos son estructuras logicas que se
refieren directamente a datos en la D" si la tabla no pertenece al usuario debe lle)ar
el prefi%o del dueo.
&ablas en la BD !racle
USE.V
-((V
D-V
N]V Nistas de performance dinamicas
Para las tablas del usuario USE.VT-(ES" ob%etos USE.V,9ECTS" tablas" )istas"
sinnimos y secuencias USE.VC-T-(,L C-T
&ipos de datos
(,@L (ongitud )ariable m'imo =L
C(, Carcter single:byte ma'imo $L
.-Q y (,@L .-Q Datos binarios ra4 ma' =MMM
(, Datos binarios ma'imo $L
5&(E Datos binarios ma' $L
C.E-TE T-(E A / column<" column=" ... 0 B
-S subquery
Cuando se utili!e una e'presin se da un alias a la columna.
-(TE. T-(E -DDH8,DD&5RHD.,P /column datatype ADE5-U(T e'prB" ... 0
Solo una columna puede ser borrada al tiempo.
-(TE. T-(E table SET U@USUED /column0C
,
-(TE. T-(E table SET U@USUED column" columnC
-(TE. T-(E table D.,P U@USUED C,(U8@SC
<6
D.,P T-(E tableC
(os sinonimos permanecen pero son in)alidos" cualquier transaccin pendiente es
commited" lo puede #acer el dueo o usuarios con grant D.,P -@R T-(E.
Para cambiar el nombre de una tabla" )ista" secuencia o sinnimo.
.E@-8E oldVname T, ne4VnameC
&runcando una tabla
(ibera el espacio de almacenamiento usado por la tabla" DE(ETE no. @o se puede
#acer .,((-C?" lo #ace el dueo o un usuario con el grant DE(ETE T-(E.
)dicionando comentarios
C,88E@T ,@ T-(E table H C,(U8@ &S K'''''''TC para consultar
-((VC,(VC,88E@TS" USE.VC,(VC,88E@TS" -((VT-VC,88E@TS"
USE.VT-VC,88E@TS.
<Y
Capitulo 11 Incluyendo constraints
5or!an las reglas a ni)el de tabla
Pre)ienen el borrado de una tabla con dependencias
@,T @U(( +
U@&2UE + Especifica una columna o columnas cuyo )alor debe ser unico
P.&8-.R ?ER
5,.E&L@ ?ER
C7EC? + Especifica una condicin que debe ser )erdadera.
El nombre del constraint es por default SRSVCn" se puede crear con la tabla o
despuEs" se #ace a ni)el de tabla o columna" son almacenados en diccionario de datos"
USE.VC,@ST.-&@TS.
C.E-TE T-(E Asc#ema.Btable
/column datatype ADE5-U(T e'prB
Acolumn constraint B"
....
A tableVconstraint B A" ... B0C
columnVname datatype C,@ST.-&@T constVname @,T @U((...
U@&2UE ?ER permite nulos a menos que se le especifique @,T @U(( se puede
definir a ni)el de tabla o columna" ,racle crea un indice unico
C.E-TE T-(E deptno / deptno @U8E./=0"
Dname N-.C7-.=/<$0"
C,@ST.-&@T deptVnameVuG U@&2UE /dname00C
C.E-TE T-(E deptno / deptno @U8E./=0"
Dname N-.C7-.=/<$0"
C,@ST.-&@T deptVnameVpG P.&8-.R ?ER /deptno00C
C.E-TE T-?E emp
/...>
deptno @U8E. /=0 C,@ST.-&@T empVdeptnoVfG 5,.E&L@ ?ER /deptno 0
.E5E.E@CES dept/deptno0"
....>
0C
,@ DE(ETE C-SC-DE permite el borrado en la tabla padre y las filas dependientes
en las tablas #i%as.
C7EC? no se puede usar CU..N-(" @EPTN-(" (ENE( y .,Q@U8 ni llamadas
a SRSD-TE" U&D" USE. y USE.E@N" se pueden definir mas de uno por columna a
ni)el de columna o de tabla.
-(TE. T-(E table -DD A C,@ST.-&@T constraint B type /column 0C
Para adicionar constraint @,T @U(( con 8,D&5R.
-(TE. T-(E table D.,P P.&8-.R ?ER H U@&2UE /column0 H
C,@ST.-&@T constraint AC-SC-DEBC
-(TE. T-(E table D&S-(E C,@ST.-&@T constraint AC-SC-DEBC
Se puede des#abilitar un constraint en la creacin de una tabla o con un -(TE..
-(TE. T-(E table E@-(E C,@ST.-&@T constraintC
=M
Se se #abilita U@&2UE o P.&8-.R ?ER un indice se crea automaticamente" un
constraint se puede #abilitar en la creacin de la tabla o con -(TE..
C)C)DE C!'&R)I'&
Se usa con D.,P C,(U8@" borra todos los constraints dependientes" borra
constraints multicolumnas.
USE.VC,@ST.-&@TS" USE.VC,@SVC,(U8@S.
=<
Capitulo 12 Creando -istas
Es una tabla logica basada en una tabla o en otra )ista" no contiene datos " se usan
para restringir acceso a los datos" para #acer consultas comple%as faciles.
7ay = clasificaciones de )istas simples y comple%as.
C.E-TE N&EQ A,. .EP(-CEB A5,.CE H @,5,.CEB N&EQ )ie4
A /alias" ....0 B
-S subquery
AQ&T7 C7EC? ,PT&,@ AC,@ST.-&@T constraintBB
AQ&T7 .E-D ,@(R BC
El subquery puede ser comple%o" no puede contener ,.DE. R.
5,.CE crea la )ista indiferentemente si e'iste o no la tabla.
Q&T7 C7EC? ,PT&,@ Especifica que solo filas accequibles por la tabla pueden ser
actuali!adas o insertadas.
Se pueden usar alias en el subquery.
En USE.VN&EQS " la sentencia SE(ECT esta en una columna (,@L.
Se puede #acer operaciones D8( en )istas simples" no se puede remo)er una fila si
contiene + funciones de grupo" L.,UP R " D&ST&@CT" .,Q@U8.
@o se puede modificar una )istas si cumple con lo anterior" columnas definidas por
e'presiones.
@o se puede adicionar si cumple con lo anterior" #ay columnas @,T @U(( en las
tablas base que no son seleccionadas por la )ista.
(sando DI&- C-EC* !P&I!'
-segura que los D8( en la )ista permane!can dentro del dominio de la )ista
Se puede for!ar constraints a ni)el de D.
D.,P N&EQ )ie4C
Solo el dueo o quien tenga D.,P -@R N&EQ.
Inline 2ieEs
Es una subconsulta con un alias que se pued usar dentro de la sentencia S2(" no es
un ob%eto del esquema.
SE(ECT a.ename" b.ma'sal
5.,8 emp a"/SE(ECT deptno" ma'/sal0 ma'sal 5.,8 emp L.,UP R deptno0 b
Q7E.E a.deptno S b.deptno
)nalisis &!P8'
SE(ECT AcolumnVlistB" .,Q@U8
5.,8 /SE(ECT AcolumnVlistB 5.,8 table ,.DE. R topV@Vcolumn0
Q7E.E .,Q@U8^S @C
.,Q@U8 asigna un )alor a cada columna iniciando con <.
En la clausula Q7E.E la cual especifica n filas a ser retornadas" debe usar ^ o ^S.
==
Capitulo 13 Otros ob.etos de /0
$ue es una secuencia
-utomticamente genera numeros unicos" es compartida" se usa generalmente para
crear )alores de lla)e primaria" reempla!a codigo de la aplicacin" )elo! acceso
cuando esta en cac#e.
C.E-TE Sf2UE@CE sEquence
A&@C.E8E@T R n B
AST-.T Q&T7 n B
Aa8-PN-(UE n H @,8-PN-(UEbB
Aa8&@N-(UE n H @,8&@N-(UEb B
AaCRC(E H @,CRC(EbB
AaC-C7E n H @,C-C7EbB
C-C7E n H @,C-C7E + Especifica cuantos )alores sern preasignados y colocados
en memoria /Por default =M )alores 0.
USE.VSECUE@CES" la columna (-STV@U8E. despliega el pro'imo numero
disponible de la secuencia.
Sequence.@EPTN-( + .etorna el pro'imo numero disponible" retorna un unico )alor
cada )e! que es llamado" sequence.CU..N-( +.etorna el )lor corriente de la
secuencia @EPTN-( debe ser usado antes de que CU..N-( contenga un )alor.
Pueden ser usados +
En la lista de un SE(ECT que no es parte de un subquery
En la lista de un SE(ECT de un subquery de un &@SE.T
En la clausula N-(UES
En la clusula SET de un UPD-TE
@o se pueden usar +
Una lista de un SE(ECT de un )ista
Un SE(ECT con D&ST&@CT
Un SE(ECT con L.,UP R" 7-N&@L o ,.DE. R
Un subquery de un SE(ECT" DE(ETE o UPD-TE
Una e'presin por default en C.E-TE T-(E o -(TE. T-(E
Saltos en la secuencia se pueden dar cuando #ay .,((-C?" falla del sistema la
secuencia es usada en otra tabla.
Se puede )er el pro'imo )alor disponible de la secuencia en USE.VSE2UE@CES si
fue creada @,C-C7E.
Modificando una secuencia
Se puede cambiar el )alor de incremento" m'imo" minimo" ciclo y cac#e.
-(TE. SE2UE@CE sEquense
A&@C.E8E@T R nB
Aa8-PN-(UE n H @,8-PN-(UEbB
Aa8&@N-(UE n H @,8&@N-(UEbB
AaCRC(E H @,CRC(EbB
AaC-C7E n H @,C-C7EbB
Se debe ser el dueo o tener el L.-@T -(TE. -@R SE2UE@CE.
D.,P SE2UE@CE sequenceC El dueo o tener D.,P -@R SE2UE@CE.
=;
$ue es un indice
Es un ob%eto" acelera la recuperacin de filas" reduce &3, utili!ando un metodo de
acceso de camino rapido" es independiente de la tabla" es mantenido por el ser)idor.
-utomticos + P?" U@&2UE
8anuales + no unicos creados por el usuario
C.E-TE &@DEP inde' ,@ table /column"Acolumn"...B0C
Se crea cuando la columna es frecuentemente usada en el Q7E.E" la columna
cintiene un amplio rango de )alores" contiene un gran numero de )alores @U((" la
tabla es grande y la mayoria de los querys esperan del =:$U de las filas.
@o se deben usar cuando la tabla es actuali!ada frecuentemente y las in)ersas de lo
anterior.
USE.V&@DEPES" USE.V&@DVC,(U8@S.
Indices basados en funcin>
Es un indice basado en e'presiones" la e'presin se construye con columnas"
constantes" funciones S2( y funciones definidas por el usuario.
C.E-TE &@DEP inde' ,@ table /e'pr0
Para asegurarse de que se usa el indice debe aasegurarse que el )alor de la funcin es
@,T @U((.
SE(ECT > 5.,8 emp Q7E.E UPPE./ename0 &S @,T @U((C
D.,P &@DEPC El dueo o tener D.,P -@R &@DEPC
inonimos
Simplifica el acceso a los ob%etos" el ob%eto no puede estar contenido en un paquete.
C.E-TE SR@,@R8 APU(&CB 5,. ob%ectC
D.,P SR@,@R8 synonymC
Solo el D- borra sinonimos publicos.
=$
Capitulo 1! Controlando acceso a los usuarios
Se tiene seguridad del sistema y seguridad de los datos.
(os pri)ilegios del sistema dan acceso a la D. 7ay mas de 6M.
C.E-TE USE." D.,P USE." D.,P -@R T-(E" -C?UP -@R T-(E.
C.E-TE USE. user &DE@T&5&ED R pass4ordC
L.-@T pri)ilege A" pri)ilege" ... B T, userC
Un desarrollador puede tener C.E-TE SESS&,@ para conectarse" C.E-TE T-(E"
C.E-TE SE2UE@CE" C.E-TE N&EQ" C.E-TE P.,CEDU.E.
Role
Lrupo de pri)ilegios relati)os que pueden ser concedidos al usuario.
C.E-TE .,(E roleC
-(TE. USE. user &DE@T&5&ED R ne4Vp4dC Se debe tener el pri)ilegio -(TE.
USE..
Un grant para el sinonimo es con)ertido en un grant para la tabla base referenciada
por el sinonimo.
L.-@T ob%ectVpri) A/columns0B ,@ ob%ect T, AUSE. H role H PU(&CB
AQ&T7 L.-@T ,PT&,@BC
Q&T7 L.-@T ,PT&,@ se re)oca en cascada
.,(EVSRSVP.&NS Pri)ilegios del sistema concedidos a los roles
.,(EVT-VP.&NS Pri)ilegios de las tablas concedidos a los roles
USE.V.,(EVP.&NS .oles accesibles por el usuario
USE.VT-VP.&NSV8-DE Pri)ilegios de ob%eto concedidos a los ob%etos del
usuario
USE.VT-VP.&NSV.ECD Pri)ilegios de ob%eto concedidos al usuario
USE.VC,(VP.&NSV8-DE Pri)ilegios de ob%eto concedido a las columna de los
ob%etos del usuario
USE.VC,(VP.&NSV.ECD Pri)ilegios de ob%eto concedidos al usuario en columnas
especificas
.EN,?E apri)ilege A" pri)ilege ...B H -((b ,@ ob%ect 5.,8 auser A"user...B H role H
PU(&Cb A C-SC-DE C,@ST.-&@TS BC
C-SC-DE C,@ST.-&@TS + .emue)e cualquier constraint de integridad
referencial #ec#os al ob%eto por medio de .E5E.E@CES
=X
Capitulo 1% 0eclarando -ariables
P(3S2( es una e'tensin de S2( con caracter*sticas de lengua%e de programacin"
brinda integracin" me%ora performance" P(3S2( puede ser usado como un grupo de
sentencias S2( dentro de un solo bloque y lo en)ian al ser)idor en una sola llamada"
reduciendo tambien trafico en la red.
P(3S2( puede cooperar con #erramientas de desarrollo como De)eloper" 5orms y
.eports" adicionando procesamiento procedimental.
Estructura de bloque P(3S2( que es estructurado por bloques.
DEC(-.E
'''''''''''''''''
ELg@
'''''''''''''''''
EPCEPT&,@
'''''''''''''''''
E@DC
&ipos de bloques
)nnimos # no tienen nombre" se puede en)ol)er un bloque annimo dentro de un
programa precompilado y dentro de S2(>Plus o ser)er manager. Triggers en ,racle
De)eloper.
ubpro3ramas # Procedimientos y funciones" toman parametros y pueden ser
in)ocados
6uncin o procedimiento de aplicacin # loque P(3S2( con nombre almacenado
en una aplicacin desarrollada por ,racle o en una librer*a compartida que puede
aceptar parmetros y puede ser in)ocada repetidamente.
(so de 2ariables # Para almacenamiento temporal" manipulacin de )alores"
reusabilidad y facil mantenimiento U.,QTRPE" UTRPE
(as )ariables se declaran en la seccin declarati)a" se asignan en la seccin
e%ecutable" se pueden pasar a los procedimientos como &@" ,UT" &@ ,UT
&ipos de 2ariables #
calar # Sostienen un solo )alor
&ipos de datos compuestos # .egistros
&ipos de datos de referencia
%ob
Nariables de tipo no P(3S2( incluyen )ariables del #ost declaradas en programas
precompilados. Campos de pantalla en formas y )ariables del #ost en S2(>Plus.
&dentifier AC,@ST-@TB datatype A@,T @U((B A +S H DE5-U(T e'prB
Una constante debe ser iniciali!ada en su declaracin.
(as )ariables no deben lle)ar el mismo nombre de las columnas de un tabla.
SE(ECT empno
&@T, empno
5.,8 empC
(as )ariables se asiganan con +S " &@T, o 5ETC7
LVmgr @U8E./$0 DE5-U(T <;;$C
=Z
NVlocation N-.C7-.=/<;0 @,T @U(( +S KC7&C-L,TC
&ipos de datos escalares
Tienen un solo )alor y no tienen componentes internos" pueden ser clasificados en $
categorias numero /integer" positi)e0" carcter" boolean y date
Narc#ar= ;="\Z\
Date $\<= .C YYYY -.D
(ong Caracter
(ong .a4 Datos binarios no es interpretada por P(3S2(
inaryVinteger
UTRPE declara la )ariable de acuerdo a una columna u otra )ariable pre)iamente
declarada. Es facil de mantener si se #acen cambios a ni)el de D.
NVename emp.enameUTRPEC
NVbalan @U8E./\"=0C
NVmin )VbalanUTRPEC
@,T @U(( no aplica a )ariables declaradas con UTRPE.
Eb )ariables booleanas e'presiones aritmEticas pueden ser usadas para retornar un
)alor booleano.
NVcom ,,(E-@ +S /)Vsal< ^ )Vsal=0C
&ipos de datos compuestos # T-(E referencia y manipula colecciones de datos
como un ob%eto" .EC,.D trata tipos de datos relacionados pero disimilares como
una unidad logica" @ESTED T-(E y N-..-R
%!B # -lmacena bloques de datos sin estructura $L
C(, almacena grandes bloques de caracteres single:byte
(, ob%etos binarios on:line3off:line
5&(E
@C(, single:byte o fi'ed:4idt# multibyte in line o out of line.
+ariables BI'D
Se declara en el ambiente del #ost y se usa para pasar )alores runtime" para ser
pasadas a uno o mas programas P(3S2( a menos que sean procedimientos" funciones
o paquetes" esto incluye )ariables decalradas en programas precompilados " campos
de pantalla
Para declararlas en el ambiente S2(>Plus
N-.&-(E ret @U8E.
N-.&-(E ret N-.C7-.=/;M0
Para desplegarlas
P.&@T ret /no pude ser usado en un bloque P(3S2(0
Para referenciarlas
Con /+0 como prefi%o asi.
N-.&-(E gVmon @U8E.
DEC(-.E
ELg@
#gVmon +S <=C
E@DC
=\
D8SV,UTPUT.PUTV(&@E alternati)a para desplegar datos en un bloque P(3S2("
se debe #abilitar S2(>Plus con SET SE.NE. ,UTPUT ,@
=6
Capitulo 1' 1scribiendo sentencias e.ecutables
(as unidades lE'icas pueden estar separados por Espacios" delimitadores /F":"S..0"
identificadores" literales y comentarios.
Identificadores
Pueden contener ;M letras" deben comen!ar con una letra" no palabaras reser)adas a
menos que se encierren entre comillas" no puede tener el mismo nombre de una
columna de una tabGa de la D.
%iterales Es un numero" carcter" cadena o )alor booleano no representado por un
identificador
Caracteres y fec#as deben ir encerrados entre comillas
@umeros pueden ir solos o en notacin cient*fica /=EX0
Un bloque P(3S2( termina con 3
Para comentar una sola linea / : :0 )arias lineas /3> >30
6unciones $% en P%.$%
@umEricas de una sola fila
De carcter de una sola fila
Con)ersin
Date
P%.$% funciones
.eporte de errores
miscellaneous
@o disponibles DEC,DE o funciones de grupo /SU8"8-P"8&@ ....0
C7./<M0 Con)ierte el codigo -SC&& a su correspondiente carcter
Bloques anidados
Sentencias pueden estar anidadas donde quiera que una sentencia es permitida
Un bloque anidado comien!a con una sentencia
(a seccin de e'cepciones puede contener bloques anidados
El alcancE de un ob%eto es la regin donde puede ser referenciado" aplica a todos los
ob%etos declarados incluyendo )ariables" cursores" e'cepciones definidas por el
usuario y constantes.
!peradores en P%.$%
(as operaciones se #acen en orden de acuerdo a la precedencia tenemos operadores
(gicos
-ritmEticos
Concatenacin
ParEntesis
,perador e'ponencial />>0
,uias de pro3ramacin
&dentar codigo
Documentar con comentarios
Con)enciones de nombres para identificadores y otros ob%etos
=Y
Capitulo 1( Interactuando con el ser-idor Oracle
entencias $% en P%.$%
Usando SE(ECT solo un grupo de )alores puede ser retornado" se #ace cambios en
las filas con D8(" control de transacciones con C,88&T" .,((-C? o
S-NEP,&@T.
P(3S2( no es una unidad transaccional" no soporta DD(" DC( tal como L.-@T o
.EN,?E.
SE(ECT selectVlist
&@T, a)ariableVname A " )ariableVname" ...B
H recordVname b
5.,8 table
Q7E.E conditionC
&@T, es obligatoria para )ariables de P(3S2( o del #ost.
5unciones de grupo no pueden ser usadas en P(3S2( solo en S2(.
Para manipular datos con D8( en P(3S2( con DE(ETE" &@SE.T" UPD-TE"
C,88&T o .,((-C?.
&nsertando datos no #ay posibilidad de ambig`edad con los identificadores y los
nombres de las columnas" cualquier identificador en el &@SE.T debe ser un nombre
de una columna de la D.
(a asignacin en P(3S2( siempre con +S en S2( S.
Para e)itar ambig`edad en el Q7E.E columnas e la D e identificadores deben
tener nombres diferentes" los errores de sinta'is pueden darse debido a que P(3S2(
c#equea primero la D para )er si es una columna.
@o #ay posibilidad de ambig`edad en el SE(ECT ni en el 5.,8.
C!MMI& y R!%%B)C*
(a transaccin inicia con el primer comando D8( despuEs de un C,88&T o un
.,((-C?.
C,88&T o .,((-C? se usan para terminar e'pl*citamente la transaccin.
C,88&T AQ,.?BC
S-NEP,&@T sa)epointVnameC
.,((-C? AQ,.?BC
.,((-C? AQ,.?B T, AS-NEP,&@TB sa)epointVnameC
Cursores $% # Es un area pri)ada de memoria #ay = tipos impl*citos utili!ados por
el ser)idor para parsear y e%ecutar S2( y e'plicitos creados por el programador.
Usando atributos de cursor S2( " se puede )erificar la salida.
S2(U.,QC,U@T @umero de filas afectadas
S2(U5,U@D atributo booleano especifica que fuern afectadas filas
S2(U@,T5,U@D
S2(U7&S,PEE@ siempre es falso debido a que P(3S2( cierra los cursores
impl*citos inmediatamente despuEs de #aber sido e%ecutados.
;M
Capitulo 1* 1scribiendo estructuras de control
Se puede controlar el flu%o lgico de las sentencias usando condicionales &5 y (,,P
&5 [T7E@ [E@D &5
&5 [T7E@ [E(SE [E@D &5
&5 [T7E@ [E(S&5 [E@D &5
&5 condicin T7E@
SentenciasC
AE(S&5 condicin T7E@
sentenciasCB
AE(SE
sentenciasCB
E@D &5C
Condicin + Es una )ariable o e'presin booleana.
T7E@ + -socia la condicin con la secuencia de sentencias que la siguen
Si la condicin es falsa o @U(( no se e%ecutan las sentencias.
En &5 anidados" estos deben terminar con su correspondiente E@D &5C
Es preferible usar E(S&5 que &5 anidados.
Se puede mane%ar )alores @U(( con &S @U((
Una e'presin aritmEtica que contenga nulos se )uel)e nula.
En la concatenacin el null es tratado como un espacio )acio.
@U(( -@D 5-(SE S 5-(SE
@U(( ,. T.UE S T.UE
@,T @U(( S @U((
entencias %!!P
(,,P basico
5or loop + control iterati)o basado en un contador
Q#ile loop + control iterati)o basado en una condicin
E'it + Termina un loop
(,,P
SentenciasC
EP&T AQ7E@ condicinBC
E@D (,,PC
(,,P 5,.
5,. contador in A.ENE.SEB
(o4erVbound..upperVbound (,,P
SsentenciasC
E@D (,,PC
El rango pueden ser literales" )ariables" e'presiones.
Se referencia el contador dentro del loop solo si es indefinido fuera de este.
Q7&(E (,,P
Q7&(E condicin (,,P
SentenciasC
E@D (,,PC
Se repite mientras la condicin sea T.UE. Si la condicin es @U(( el loopes pasado.
;<
(os loops se pueden anidar " se puede usar labels para distiguir entre loops
/^^label__0 se colocan antes de (,,P" se puede salir del loop con EP&T
referenciando el label" el label se puede incluir en el E@D (,,P por claridad
EL&@
^^outerVloop__
(,,P
EP&T Q7E@ )Vcount _ <M
^^innerVloop__
(,,P
EP&T outerVloop Q7E@ total S KREST
EP&T innerVloop Q7E@ innerVdone S KREST
E@D (,,P innerVloopC
E@D (,,P outerVloopC
E@DC
;=
Capitulo 2, 2raba.ando con tipos de datos
co"puestos
.egistros P(3S2(
Tablas P(3S2(
@ested tables
Narray
Contienen componentes internos son reusables" es utili!a el .EC,.D para tratar
datos dissimilares como una unidad logica" se usa T-(E para referenciar y
manipular colecciones de datos como un ob%eto.
Un registro es un grupo de datos relacionados almacenados en campos" que tienen su
nombre y su tipo de datos" una tabla contiene columnas y su lla)e primaria.
Son con)enientes para sacar filas de datos de una tabla para procesamiento.
- los registros se les pueden asignar )alores iniciales o definirlos como @,T @U(("
#ay registros anidados.
TRPE typeVname &S .EC,.D
a fieldVdeclaration A"fieldVdeclaration...BbC
5ieldVdeclaration fieldVname a fieldVtype H )ariableUTRPE H table.columnUTRPE H
tableU.,QTRPE b
A A@,T @U((B a+S DE5-U(T b e'pr B
Para referenciar los campos de un registro+ recordVname.fieldVname" su alcan!e es
en el bloque o subprograma donde fue definido.
El atributo FR!D&9PE
Declara una )ariable de acuerdo a una coleccin de columnas en una tabla o )ista de
la D
DEC(-.E
EmpVrecord empU.,QTRPEC
Nenta%as de usar .,QTRPE
Desconocimiento de los campos de una tabla
(os campos cambian runtime
DEC(-.E
empVrec empU.,QTRPEC
EL&@
SE(ECT > &@T, empVrec
5.,8 empC
E@DC
&ablas P%.$%
Tienen dos componentes > P? de tipo de datos &@-.RV&@TELE." > columnas
escalaras o tipo de dato de registro.
Se incrementa dinmicamente. Son similares a un arreglo
TRPE typeVname &S T-(E ,5
acolumnVtype H )ariableUTRPE H table.columnUTRPEb A@,T @U((B
A&@DEP R &@-.RV&@TELE.B
TRPE enameVtableVtype &S T-(E ,5 emp.enameUTRPE
&@DEP R &@-.RV&@TELE.C
EnameVtable enameVtableVtypeC
@o pueden ser inciali!adas en su declaracin. Se referencian
plVsqlVtableVname/primaryVGeyV)alues0" la P? puede ser negati)a
;;
(sando metodos de tablas P%.$%
TableVname.met#odVnameA/parameters0B
EP&STS/n0 .etorna T.UE si el elemento en la posicin e'iste
C,U@T @umero de elementos de una tabla P(3S2(
5&.ST .etorna el primero y el ultimo numero de indice" @U(( si esta
(-ST )acia
P.&,./n0 .etorna numero de indice que precede al indice n
@EPT/n0 .etorna numero de indice que sucede al indice n
EPTE@D/n"i0 > &ncrementa el tamao de la tabla
EPTE@D agrega un elemento nulo
EPTE@D/n0 agrega n elementos nulos
EPTE@D/n"i0 agrega n copias de el elemento i
T.&8 > remue)e un elemento del final
T.&8/n0 remue)e n elementos del final
DE(ETE .emue)e todos los elementos de la tabla
DE(ETE/n0 remue)e el elemento n
DE(ETE/m"n0 .emue)e elemenetos en el rango m..n
Para referirse a los elementos de una tabla
Table/inde'0.campo
;$
Capitulo 21 1scribiendo cursores e3pl4citos
El ser)idor impl*citamente abre un cursor para procesar sentencias SE(ECT no
asociadas con un cursor e'plicito.
Cursores e0pl5citos
Procesa cada fila retornada por un SE(ECT de multiples filas. El grupo de filas
retornado es llamdo grupo acti)o" se guarda un rastro de cual es la fila corriente" el
programador lo controla manualmente.
Se usa ,PE@ e%cuta el query asociado" identifica el grupo acti)o y la posicin del
cursor " 5ETC7 recupera la fila corriente y a)an!a el cursor a la pro'ima fila"
C(,SE des#abilita el cursor y libera lass filas.
CU.S,. cursorVname &S
SelectVstatementC
)briendo el cursor
,PE@ cursorVnameC
Dinamicamente asigna memoria para el area de conte'to" Parsea el SE(ECT" obtiene
posiciones de memoria de las )ariables de entrada" identifica el grupo acti)o"
posiciona el puntero %ustamente antes de la primera fila.
Si no retorna filas no se da una e'cepcin " perso se puede probar la salida con los
atributos del cursor.
Para cursores declarados 5,. UPD-TE" se bloquean las filas.
5ETC7 cursorVname &@T, A)ariable<" ... H recordVname BC
.ecupera la fila corriente dentro de )ariables" incluye el mismo numero de )ariables"
se debe probar el curosr para )er si contiene filas.
>>>
,pen definedVcursorC
(,,P
5ETC7 definedVcursor &@T, definedV)ariablesC
EP&T Q7E@ ....C
E@D (,,PC
>>>
C(,SE cursorVnameC
Se debe cerrar para liberar recursos" esta ligado con el parmetro ,PE@VCU.S,.S.
)tributos # U&S,PE@ " U@,T5,U@D" U5,U@D" U.,QC,U@T numero de
filas que trae el cursor.
Para procesar diferentes filas de un cursor de usa un (,,P.
5ETC7 empVcursor &@T, )VempnoC
EP&T Q7E@ empVcursorU@,T5,U@D ,. empVcursorU@,T5,U@D &S @U((C
&S @U(( es para asegurarse asi si el 5ETC7 nunca se e%ecuta no #abra problemas.
Se puede crear registros basados en las filas de un cursor.
DEC(-.E
CU.S,. em &S
SE(ECT empno" ename
5.,8 empC
EmpVrecord emU.,QTRPEC
EL&@
,PE@ emC
5ETC7 em &@T, empVrecordC
E@DC
;X
Cursor para %!!P
5,. recordVname &@ cursorVname (,,P
SentenciasC
E@D (,,PC
7ay implicitamente ,PE@" 5ECT7 y C(,SE. y el cursor es impl*citamente
declarado.
Cursores en %!!P que usan subqueries
@o se necesita declarar el cursor" y no puede usar los atributos de cursor.
EL&@
5,. em &@ / SE(ECT empno 5.,8 emp 0
(,,P
SentenciasC
E@D (,,PC
E@DC
;Z
Capitulo 23 +ane.ando e3cepciones
Manejando e0cepciones con P%.$%
Una e'cepcin es un identificador que se alcan!a durante la e%ecucin cuando ocurre
un error ,racle o cuando se alcan!a e'pl*citamente terminando asi las acciones en el
cuerpo principal" se puede mane%ar atrapndola en un mane%ador reali!ando las
acciones finales o propagandola al ambiente llamado.
Se puede alcan!ar la e'cepcin e'pl*citamente usando .-&SE.
-l atrapar una e'cepcin el procesamiento pasa al mane%ador de e'cepciones" si se
mane%a e'itosamente la e'cepcin" entonces la e'cepcin no se propaga y el bloque
P(3S2( termina con E'ito. Si no el bloque P(3S2( falla y la e'cepcin es propagada
al ambiente que fue llamada.
&ipos de e0cepciones
Predefinidas por ,racle + -pro'imadamente =M errores
@o predefinidas por ,racle + Cualquier otro error standard de ,racle
Definidas por el usuario + Condicin que el desarrollador define como anormal
)trapando e0cepciones
EPCEPT&,@
Q7E@ e'ception< A,. e'ception= >>> B T7E@
SentenciasC
A Q7E@ e'ception; A ,. e'ception$ ... B T7E@
sentenciasC
B
A Q7E@ ,T7E.S T7E@
sentenciasC
B
Se puede atrapar cualquier error incluyendo la rutina correspondiente en el
mane%ador de e'cepciones" cada mane%ador consiste de una clausula Q7E@.
,T7E.S atrapa las e'cepciones no definidas y por esto es la ultima e'cepcin
definida en el mane%ador. Solo un mane%ador es procesado antes de salir del bloque.
)trapando errores predefinidos
.eferenciar el nombre estndar en la rutina de mane%o de e'cepciones.
E'cepciones predefinidas
-CCESSV&@T,V@U(( asignar )alores a atributos de ob%etos no iniciali!ados
C,((ECT&,@SV&SV@U(( aplicar otros metodos diferentes a EP&STS para )array
, nested table no iniciali!adas
P.,L.-8VE..,. P(3S2( tiene un problema interno
.,QTRPEV8&S8-TC7 &ncompatibles tipos en una asignacin
ST,.-LEVE..,. memoria corrupta
SUSC.&PTVER,@DVC,U@T referenciar nestedVtable o )array usando un indice
mas grande que los elementos de la coleccin.
SUSC.&PTV,UTS&DEV(&8&T referenciar nested o )array usando un rango que
esta fuera del limite
N-(UEVE..,. error de con)ersin aritmEtica" truncacin ocurre
)trapando e0cepciones no predefinidas por el ser2idor
Se la declara" o usando ,T7E.S" en pl3sql pragma EPCEPT&,@V&@&T llama al
compilador asociando el nombre de la e'cepcin con un numero de error ,racle.
P.-L8- significa que la sentencia es una directi)a de compilador.
;\
DEC(-.E
EVemps EPCEPT&,@C
P.-L8- EPCEPT&,@ &@&T / eVemps" :==Y=0C
ELg@
>>>>
EPCEPT&,@
Q7E@ eVemps T7E@
>>>>
E@DC
6unciones para atrapar e0cepciones
S2(C,DE retorna el )alor numerico del error M no #ay e'cepcin" < e'cepcin
definida por el usuario" F<MM @,VD-T-V5,U@D" numero negati)o otro error
,racle
S2(E..8 retorna el mensa%e asociado
DEC(-.E
NVerrorVcode @U8E.C
NVerrorVmessage N-.C7-.=/=XX0C
ELg@
EPCEPT&,@
Q7E@ ,T7E.S T7E@
.,((-C?C
NVerrorVcode +S S2(C,DEC
NVerrorVmessage +S S2(E..8C
E@DC
)trapando e0cepciones definidas por el usuario
DEC(-.E
.-&SE
.E5E.E@CE
DEC(-.E
EVin)alid EPCEPT&,@C
ELg@
UPD-TE product
SET descrip S Innnnn I
Q7E.E prodid S XC
&5 S2(U@,T55,U@D T7E@
.-&SE eVin)alidC
E@D &5C
EPCEPT&,@
Q7E@ eVin)alid T7E@
.,((-C?C
E@DC
)mbientes llamados
S2(>Plus Despliega el numero del error y el mensa%e en la pantalla
Procedure builder I I I
,racle De)eloper 5orms utili!a E..,.VC,DE y E..,.VTEPT
-plicacin precompilada accede al numero de la e'cepcin atra)e! de S2(C-
loque P(3S2( atrapa la e'cepcin en el mane%ador de e'cepciones
.-&SEV-PP(&C-T&,@VE..,. /errorVnumber" messageA " aT.UE H 5-(SEbB0C
Permite usar mensa%es de error definidos por el usuario
ErrorVnumber [=MMMM a [=MYYY
;6
T.UE H 5-(SE si T.UE los errores en la pila de los errores pre)ios" 5-(SE el error
default reempla!a los errores pre)ios. Se puede usar en la seccin e%ecutable y la
seccin de e'cepciones.
;Y

También podría gustarte