Sentencias Ejecutables

Anuncio
4
Sentencias Ejecutables
Copyright  Oracle Corporation, 1998. All rights reserved.
Objetivos
Al
ón usted
á:
Al final
final de
de esta
esta lecci
lección
usted podr
podrá:
•• Reconocer
Reconocer el
el significado
significado de
de la
la sección
sección
ejecutable
ejecutable
•• Escribir
Escribir sentencias
sentencias en
en la
la sección
sección
ejecutable
ejecutable
•• Describir
Describir las
las reglas
reglas de
de bloques
bloques
anidados
anidados
•• Ejecutar
Ejecutar yy comprobar
comprobar un
un bloque
bloque PL/SQL
PL/SQL
•• Utilizar
Utilizar convenciones
convenciones de
de codificación
codificación
4-2
Copyright  Oracle Corporation, 1998. All rights reserved.
Anatomía de un Bloque PL/SQL
••
••
DECLARE
DECLARE––Opcional
Opcional
––Variables,
Variables,constantes,
constantes,cursores,
cursores,
excepciones
excepcionesdefinidas
definidaspor
porelelusuario
usuario
BEGIN
BEGIN––Obligatorio
Obligatorio
––Sentencias
SentenciasSQL
SQL
––Sentencias
Sentenciasde
decontrol
controlPL/SQL
PL/SQL
••
••
DECLARE
BEGIN
EXCEPTION
EXCEPTION
END;
EXCEPTION––Opcional
Opcional
––Acciones
Accionesque
quese
seejecutarán
ejecutaráncuando
cuandose
se
DECLARE
DECLARE
produzcan
errores
produzcan errores
v_variable
VARCHAR2(5)
v_variable
VARCHAR2(5)
END;
–
Obligatorio
END; – Obligatorio
BEGIN
BEGIN
SELECT
column_name
SELECT
column_name
INTO
INTO v_variable
v_variable
FROM
FROM table_name
table_name
END;
END;
4-3
Copyright  Oracle Corporation, 1998. All rights reserved.
Sintaxis y Directrices del Bloque
PL/SQL
•• Las
Las sentencias
sentencias pueden
pueden continuar
continuar en
en
varias
varias líneas.
líneas.
•• Las
Las unidades
unidades léxicas
léxicas pueden
pueden separarse
separarse
por
por medio
medio de
de espacios:
espacios:
–– Delimitadores
Delimitadores
–– Identificadores
Identificadores
–– Literales
Literales
–– Comentarios
Comentarios
4-4
Copyright  Oracle Corporation, 1998. All rights reserved.
Sintaxis y Directrices del Bloque
PL/SQL
Identificadores
Identificadores
•• Pueden
Pueden contener
contener hasta
hasta 30
30 caracteres.
caracteres.
•• No
No pueden
pueden contener
contener palabras
palabras reservadas
reservadas
aa menos
menos que
que estén
estén entre
entre dobles
dobles comillas.
comillas.
•• Deben
Deben comenzar
comenzar con
con un
un caracter
caracter
alfabético.
alfabético.
•• Su
Su nombre
nombre no
no debería
debería coincidir
coincidir con
con el
el de
de
una
una columna
columna de
de tabla
tabla de
de base
base de
de datos.
datos.
4-5
Copyright  Oracle Corporation, 1998. All rights reserved.
Sintaxis y Directrices del Bloque
PL/SQL
Literales
Literales
•• Los
Los literales
literales de
de fecha
fecha yy de
de caracteres
caracteres
deben
deben estar
estar entre
entre comillas
comillas simples.
simples.
v_ename
v_ename :=
:= 'Henderson';
'Henderson';
•• Los
Los números
números pueden
pueden ser
ser valores
valores
simples
simples o
o una
una notación
notación científica.
científica.
4-6
Copyright  Oracle Corporation, 1998. All rights reserved.
Código de Comentario
•• Anteponga
Anteponga aa los
los comentarios
comentarios de
de una
una sola
sola
línea
línea dos
dos guiones
guiones ((- -)
-) aa modo
modo de
de prefijo.
prefijo.
•• Coloque
Coloque los
los comentarios
comentarios de
de varias
varias líneas
líneas
entre
entre los
los símbolos
símbolos /*
/* yy */.
*/.
Ejemplo
Ejemplo
...
...
v_sal
v_sal NUMBER
NUMBER (9,2);
(9,2);
BEGIN
BEGIN
/*
/* Compute
Compute the
the annual
annual salary
salary
monthly
monthly salary
salary input
input from
from
v_sal
v_sal :=
:= v_sal
v_sal ** 12;
12;
END;
END; --- This
This is
is the
the end
end of
of the
the
4-7
based
based on
on
the
the user
user
the
the
*/
*/
transaction
transaction
Copyright  Oracle Corporation, 1998. All rights reserved.
Funciones SQL en PL/SQL
•• Disponibles:
Disponibles:
–– Número
Número de
de una
una fila
fila
–– Caracter
Caracter de
de una
una fila
fila
–– Conversión
Conversión de
de tipos
tipos
de
de datos
datos
–– Fecha
Fecha
}
Igual que en SQL
•• No
No disponibles:
disponibles:
–– GREATEST
GREATEST
–– LEAST
LEAST
–– Funciones
Funciones de
de grupo
grupo
4-8
Copyright  Oracle Corporation, 1998. All rights reserved.
Funciones PL/SQL
Ejemplos
Ejemplos
•• Genere
Genere la
la lista
lista de
de direcciones
direcciones de
de una
una
empresa.
empresa.
v_mailing_address
v_mailing_address :=
:= v_name||CHR(10)||
v_name||CHR(10)||
v_address||CHR(10)||v_state||
v_address||CHR(10)||v_state||
CHR(10)||v_zip;
CHR(10)||v_zip;
•• Convierta
Convierta el
el nombre
nombre del
del empleado
empleado aa
minúsculas.
minúsculas.
v_ename
v_ename
4-9
:=
:= LOWER(v_ename);
LOWER(v_ename);
Copyright  Oracle Corporation, 1998. All rights reserved.
Conversión de Tipos de Datos
•• Convierta
Convierta datos
datos aa tipos
tipos de
de datos
datos comparables.
comparables.
•• La
La existencia
existencia de
de tipos
tipos de
de datos
datos mezclados
mezclados
puede
puede ocasionar
ocasionar un
un error
error yy afectar
afectar al
al
rendimiento.
rendimiento.
•• Funciones
Funciones de
de conversión:
conversión:
–– TO_CHAR
TO_CHAR
–– TO_DATE
TO_DATE
–– TO_NUMBER
TO_NUMBER
4-10
BEGIN
BEGIN
SELECT
SELECT TO_CHAR(hiredate,
TO_CHAR(hiredate,
'MON.
'MON. DD,
DD, YYYY')
YYYY')
FROM
FROM emp;
emp;
END;
END;
Copyright  Oracle Corporation, 1998. All rights reserved.
Conversión de Tipos de Datos
Esta
Esta sentencia
sentencia produce
produce un
un error
error de
de
compilaci
ón.
compilación.
v_comment
v_comment :=
:= USER||':
USER||': '||SYSDATE;
'||SYSDATE;
Para
Para corregir
corregir el
el error
error se
se utiliza
utiliza la
la función
función
de
de conversión
conversión TO_CHAR.
TO_CHAR.
v_comment
v_comment :=
:= USER||':
USER||': '||TO_CHAR(SYSDATE);
'||TO_CHAR(SYSDATE);
4-11
Copyright  Oracle Corporation, 1998. All rights reserved.
Bloques Anidados y Ámbito de
las Variables
•• Las
Las sentencias
sentencias pueden
pueden ser
ser anidadas
anidadas cuando
cuando
esté
esté permitida
permitida una
una sentencia
sentencia ejecutable.
ejecutable.
•• Un
Un bloque
bloque anidado
anidado se
se convierte
convierte en
en una
una
sentencia.
sentencia.
•• Una
Una sección
sección de
de excepciones
excepciones puede
puede contener
contener
bloques
bloques anidados.
anidados.
•• El
El ámbito
ámbito de
de un
un objeto
objeto es
es la
la región
región del
del
programa
programa que
que puede
puede hacer
hacer referencia
referencia al
al
objeto.
objeto.
4-12
Copyright  Oracle Corporation, 1998. All rights reserved.
Bloques Anidados y Ámbito de
la Variable
•• Un
Un identificador
identificador se
se hace
hace visible
visible en
en las
las
regiones
regiones en
en las
las que
que puede
puede hacer
hacer
referencia
referencia al
al identificador
identificador no
no
cualificado:
cualificado:
–– Un
Un bloque
bloque puede
puede consultar
consultar el
el bloque
bloque
del
del que
que forma
forma parte.
parte.
–– Un
Un bloque
bloque no
no puede
puede consultar
consultar los
los
subbloques
subbloques que
que contiene.
contiene.
4-13
Copyright  Oracle Corporation, 1998. All rights reserved.
Bloques Anidados y Ámbito de
la Variable
Ejemplo
Ejemplo
...
...
xx BINARY_INTEGER;
BINARY_INTEGER;
BEGIN
BEGIN
...
...
DECLARE
DECLARE
yy NUMBER;
NUMBER;
BEGIN
BEGIN
...
...
END;
END;
...
...
END;
END;
4-14
Ámbito de x
Ámbito de y
Copyright  Oracle Corporation, 1998. All rights reserved.
Operadores de PL/SQL
•• Lógico
Lógico
•• Arimético
Arimético
•• De
De concatenación
concatenación
•• Paréntesis
Paréntesis para
para controlar
controlar
el
el orden
orden de
de operaciones
operaciones
•• Operador
Operador exponencial
exponencial (**)
(**)
4-15
Como en
SQL
Copyright  Oracle Corporation, 1998. All rights reserved.
Operadores de PL/SQL
Ejemplos
Ejemplos
•• Aumente
Aumente el
el índice
índice de
de un
un bucle.
bucle.
v_count
v_count
:=
:= v_count
v_count ++ 1;
1;
•• Establezca
Establezca el
el valor
valor de
de un
un indicador
indicador
booleano.
booleano.
v_equal
v_equal
:=
:= (v_n1
(v_n1 == v_n2);
v_n2);
•• Valide
Valide un
un número
número de
de empleado
empleado si
si
contiene
contiene un
un valor.
valor.
v_valid
v_valid
4-16
:=
:= (v_empno
(v_empno IS
IS NOT
NOT NULL);
NULL);
Copyright  Oracle Corporation, 1998. All rights reserved.
Variables de Sustitución
Para
Para hacer
hacer referencia
referencia aa una
una variable
variable de
de
susticui
ón en
susticuión
en PL/SQL
PL/SQL debe
debe anteponer
anteponer aa su
su
nombre
nombre dos
dos puntos
puntos (:)
(:) aa modo
modo de
de prefijo.
prefijo.
Ejemplo
Ejemplo
:return_code
:return_code :=
:= 0;
0;
IF
IF credit_check_ok(acct_no)
credit_check_ok(acct_no) THEN
THEN
:return_code
:return_code :=
:= 1;
1;
END
END IF;
IF;
4-17
Copyright  Oracle Corporation, 1998. All rights reserved.
Directrices de Programación
Facilite
ódigo
Facilite el
el mantenimiento
mantenimiento del
del ccódigo
•• Documentando
Documentando el
el código
código con
con
comentarios.
comentarios.
•• Desarrollando
Desarrollando una
una convención
convención de
de
mayúsculas/minúsculas
mayúsculas/minúsculas para
para el
el código.
código.
•• Desarrollando
Desarrollando convenciones
convenciones de
de
nomenclatura
nomenclatura para
para los
los identificadores
identificadores yy
otros
otros objetos.
objetos.
•• Sangrando
Sangrando para
para facilitar
facilitar la
la lectura.
lectura.
4-18
Copyright  Oracle Corporation, 1998. All rights reserved.
Convenciones de Nomenclatura
del Código
Evite
üedad:
Evite la
la ambig
ambigüedad:
•• Los
Los nombres
nombres de
de variables
variables locales
locales yy
parámetros
parámetros formales
formales tienen
tienen prioridad
prioridad
sobre
sobre los
los nombres
nombres de
de tablas
tablas de
de bases
bases
de
de datos.
datos.
•• Los
Los nombres
nombres de
de columnas
columnas tienen
tienen
prioridad
prioridad sobre
sobre los
los nombres
nombres de
de
variables
variables locales.
locales.
4-19
Copyright  Oracle Corporation, 1998. All rights reserved.
Código de Sangrado
Para
Para obtener
obtener mayor
mayor claridad,
claridad, sangre
sangre cada
cada
nivel
ódigo.
nivel de
de ccódigo.
DECLARE
DECLARE
Ejemplo
Ejemplo
v_detpno
NUMBER(2);
v_detpno
NUMBER(2);
BEGIN
BEGIN
IF
IF x=0
x=0 THEN
THEN
y=1;
y=1;
END
END IF;
IF;
END;
END;
4-20
v_location
VARCHAR2(13);
v_location
VARCHAR2(13);
BEGIN
BEGIN
SELECT
SELECT deptno,
deptno,
location
location
INTO
v_deptno,
INTO
v_deptno,
v_location
v_location
FROM
dept
FROM
dept
WHERE
WHERE dname
dname == 'SALES';
'SALES';
...
...
END;
END;
Copyright  Oracle Corporation, 1998. All rights reserved.
Determine el Ámbito de la Variable
Ejercicio
Ejercicio de
de clase
clase
...
...
DECLARE
DECLARE
V_SAL
V_SAL
V_COMM
V_COMM
V_MESSAGE
V_MESSAGE
BEGIN
BEGIN ...
...
NUMBER(7,2)
NUMBER(7,2) :=
:= 60000;
60000;
NUMBER(7,2)
NUMBER(7,2) :=
:= V_SAL
V_SAL // .20;
.20;
VARCHAR2(255)
VARCHAR2(255) :=
:= ‘‘ eligible
eligible for
for commission’;
commission’;
DECLARE
DECLARE
V_SAL
NUMBER(7,2)
V_SAL
NUMBER(7,2) :=
:= 50000;
50000;
V_COMM
NUMBER(7,2)
V_COMM
NUMBER(7,2) :=
:= 0;
0;
V_TOTAL_COMP
NUMBER(7,2)
V_TOTAL_COMP
NUMBER(7,2) :=
:= V_SAL
V_SAL ++ V_COMM;
V_COMM;
BEGIN
...
BEGIN ...
V_MESSAGE
V_MESSAGE :=
:= ‘CLERK
‘CLERK not’||V_MESSAGE;
not’||V_MESSAGE;
END;
END;
V_MESSAGE
V_MESSAGE :=
:= ‘SALESMAN’||’V_MESSAGE;
‘SALESMAN’||’V_MESSAGE;
END;
END;
4-21
Copyright  Oracle Corporation, 1998. All rights reserved.
Resumen
•• Los
Los bloques
bloques PL/SQL
PL/SQL se
se componen
componen de
de
las
las siguientes
siguientes secciones:
secciones:
–– Declarativa
Declarativa (opcional)
(opcional)
–– Ejecutable
Ejecutable (necesaria)
(necesaria)
–– Gestión
Gestión de
de excepciones
excepciones (opcional)
(opcional)
DECLARE
•• Estructura
Estructura del
del bloque
bloque PL/SQL:
PL/SQL:
–– Bloques
Bloques anidados
anidados yy reglas
reglas de
de ámbito
ámbito BEGIN
–– Bloques
Bloques de
de ejecución
ejecución
EXCEPTION
END;
4-22
Copyright  Oracle Corporation, 1998. All rights reserved.
Resumen
•• Programación
Programación PL/SQL:
PL/SQL:
–– Símbolos
Símbolos
–– Funciones
Funciones
–– Conversiones
Conversiones de
de tipos
tipos de
de datos
datosDECLARE
4-23
–– Operadores
Operadores
BEGIN
–– Variables
Variables de
de sustitución
sustitución
EXCEPTION
–– Convenciones
Convenciones yy directrices
directrices
END;
Copyright  Oracle Corporation, 1998. All rights reserved.
Visión General de la Práctica
•• Revisión
Revisión de
de reglas
reglas de
de anidamiento
anidamiento yy
ámbito
ámbito
•• Desarrollo
Desarrollo yy prueba
prueba de
de los
los bloques
bloques
PL/SQL
PL/SQL
4-24
Copyright  Oracle Corporation, 1998. All rights reserved.
Descargar