Declaración de Variables

Anuncio
3
Declaración de Variables
Copyright  Oracle Corporation, 1998. All rights reserved.
Objetivos
Al
ón, deber
ía ser
Al completar
completar esta
esta lecci
lección,
debería
ser
capaz
capaz de
de hacer
hacer lo
lo siguiente:
siguiente:
•• Reconocer
Reconocer las
las bases
bases del
del bloque
bloque PL/SQL
PL/SQL
yy sus
sus secciones.
secciones.
•• Describir
Describir el
el significado
significado de
de las
las variables
variables
en
en PL/SQL
PL/SQL
•• Distinguir
Distinguir entre
entre variables
variables PL/SQL
PL/SQL yy no
no
PL/SQL.
PL/SQL.
•• Declarar
Declarar variables
variables PL/SQL
PL/SQL
•• Ejecutar
Ejecutar un
un bloque
bloque PL/SQL
PL/SQL
3-2
Copyright  Oracle Corporation, 1998. All rights reserved.
Estrucutra del Bloque PL/SQL
••
••
DECLARE
DECLARE––Opcional
Opcional
––Variables,
Variables,cursores,
cursores,excepciones
excepciones
definidas
definidaspor
porelelusuario
usuario
BEGIN
BEGIN––Obligatorio
Obligatorio
––Sentencias
SentenciasSQL
SQL
––Sentencias
Sentenciasde
deControl
ControlPL/SQL
PL/SQL
••
••
EXCEPTION
EXCEPTION––Opcional
Opcional
DECLARE
––Acciones
Accionesaarealizar
realizarcuando
cuandose
seproduzcan
produzcan
errores
BEGIN
errores
END;
END;––Obligatorio
Obligatorio
EXCEPTION
END;
3-3
Copyright  Oracle Corporation, 1998. All rights reserved.
Estructura de un Bloque PL/SQL
DECLARE
DECLARE
v_variable
v_variable VARCHAR2(5);
VARCHAR2(5);
BEGIN
BEGIN
SELECT
column_name
SELECT
column_name
INTO
v_variable
INTO
v_variable
FROM
table_name
FROM
table_name
EXCEPTION
EXCEPTION
WHEN
WHEN exception_name
exception_name THEN
THEN
...
...
END;
END;
DECLARE
BEGIN
EXCEPTION
END;
3-4
Copyright  Oracle Corporation, 1998. All rights reserved.
Tipos de Bloques
Anónimo
Procedimiento
Función
[DECLARE]
[DECLARE]
PROCEDURE
PROCEDURE name
name
IS
IS
BEGIN
BEGIN
-statements
--statements
BEGIN
BEGIN
-statements
--statements
[EXCEPTION]
[EXCEPTION]
[EXCEPTION]
[EXCEPTION]
FUNCTION
FUNCTION name
name
RETURN
RETURN datatype
datatype
IS
IS
BEGIN
BEGIN
-statements
--statements
RETURN
RETURN value;
value;
[EXCEPTION]
[EXCEPTION]
END;
END;
END;
END;
END;
END;
3-5
Copyright  Oracle Corporation, 1998. All rights reserved.
Programas
Anonymous
Anonymous
block
block
Application
Application
trigger
trigger
DECLARE
BEGIN
EXCEPTION
Database
Database
trigger
trigger
3-6
Stored
Stored
procedure/
procedure/
function
function
Application
Application
procedure/
procedure/
function
function
END;
Copyright  Oracle Corporation, 1998. All rights reserved.
Packaged
Packaged
procedure/
procedure/
function
function
Uso de Variables
Use
Use variables
variables para:
para:
•• Almacenamiento
Almacenamiento temporal
temporal de
de datos.
datos.
•• Manipulación
Manipulación de
de valores
valores almacenados.
almacenados.
•• Reusabilidad.
Reusabilidad.
•• Fácil
Fácil mantenimiento.
mantenimiento.
3-7
Copyright  Oracle Corporation, 1998. All rights reserved.
Gestión de Variables en PL/SQL
•
Declarar e inicializar las variables
dentro de la sección de declaración.
•
Asignar nuevos valores a las variables
dentro de la sección de código.
•
Pasar valores a los bloques PL/SQL a
través de los parámetros.
•
Ver los resultados a través de variables
de salida.
3-8
Copyright  Oracle Corporation, 1998. All rights reserved.
Tipos de Variables
•• Variables
Variables PL/SQL
PL/SQL
–– Escalar
Escalar
–– Compuesta
Compuesta
–– Referenciada
Referenciada
–– LOB
LOB (large
(large objects)
objects)
•• Variable
Variable No-PL/SQL
No-PL/SQL
–– Variables
Variables de
de Enlace
Enlace (bind)
(bind) yy Host
Host
3-9
Copyright  Oracle Corporation, 1998. All rights reserved.
Tipos de Variables
TRUE
25-OCT-99
“Four score and seven years ago
our fathers brought forth upon
this continent, a new nation,
conceived in LIBERTY, and dedicated
256120.08
to the proposition that all men
are created equal.”
Atlanta
3-10
Copyright  Oracle Corporation, 1998. All rights reserved.
Declaración de Variables
PL/SQL
Sintaxis
Sintaxis
identifier
identifier [CONSTANT]
[CONSTANT] datatype
datatype [NOT
[NOT NULL]
NULL]
[:=
[:= || DEFAULT
DEFAULT expr];
expr];
Ejemplos
Ejemplos
Declare
Declare
v_hiredate
v_hiredate
v_deptno
v_deptno
v_location
v_location
c_
c_comm
comm
3-11
DATE;
DATE;
NUMBER(2)
NUMBER(2) NOT
NOT NULL
NULL :=
:= 10;
10;
VARCHAR2(13)
VARCHAR2(13) :=
:= ''Atlanta
Atlanta'';;
CONSTANT
CONSTANT NUMBER
NUMBER :=
:= 1400;
1400;
Copyright  Oracle Corporation, 1998. All rights reserved.
Declaración de Variables
PL/SQL
Recomendaciones
•
•
Seguir las convenciones de nombres.
•
Inicializar los identificadores usando el
operador de asignación (:=) o la palabra
reservada DEFAULT.
•
Declarar a lo sumo un identificador por
línea.
3-12
Inicializar las constantes y variables
designadas como NOT NULL.
Copyright  Oracle Corporation, 1998. All rights reserved.
Reglas para Nombres
•• Dos
Dos variables
variables pueden
pueden tener
tener el
el mismo
mismo
nombre,
nombre, si
si están
están en
en bloques
bloques diferentes.
diferentes.
•• El
El nombre
nombre de
de la
la variable
variable (identificador)
(identificador)
no
no debería
debería ser
ser el
el mismo
mismo que
que el
el de
de una
una
columna
columna de
de una
una tabla
tabla utilizada
utilizada
en
en el
el bloque.
bloque. DECLARE
DECLARE
empno
empno NUMBER(4);
NUMBER(4);
BEGIN
BEGIN
SELECT
SELECT empno
empno
INTO
INTO empno
empno
FROM
FROM emp
emp
WHERE
WHERE ename
ename == ''SMITH
SMITH'';;
END;
END;
3-13
Copyright  Oracle Corporation, 1998. All rights reserved.
Asignación de Valores a Variables
Sintaxis:
Sintaxis:
identifier
identifier :=
:= expr;
expr;
Ejemplo:
Ejemplo:
Establecer
Establecer una
una fecha
fecha de
de alta
alta por
por defecto,
defecto,
para
para los
los nuevos
nuevos empleados:
empleados:
v_hiredate
v_hiredate :=
:= ''31-DEC-1998
31-DEC-1998'';;
Asignar
Maduro” aa un
Asignar el
el apellido
apellido ““Maduro”
un
empleado:
empleado:
v_ename
v_ename :=
:= 'Maduro';
'Maduro';
3-14
Copyright  Oracle Corporation, 1998. All rights reserved.
Inicialización de Variables y
Palabras Clave (keywords)
Uso:
•• :=
:= Operador
Operador de
de Asignación
Asignación
•• DEFAULT
DEFAULT
•• NOT
NOT NULL
NULL
3-15
Copyright  Oracle Corporation, 1998. All rights reserved.
Variables Escalares
•• Mantienen
Mantienen un
un único
único valor.
valor.
•• No
No tienen
tienen componentes
componentes internos.
internos.
25-OCT-99
“Four score and seven years
ago our fathers brought
TRUE
forth upon this continent, a
new nation, conceived in
256120.08
LIBERTY, and dedicated to
the proposition that all men
are created equal.”
3-16
Atlanta
Copyright  Oracle Corporation, 1998. All rights reserved.
Principales Variables Escalares
•• VARCHAR2(longitud_máxima)
VARCHAR2(longitud_máxima)
•• NUMBER
NUMBER [(precisión,
[(precisión, escala)]
escala)]
•• DATE
DATE
•• CHAR
CHAR [(longitud_máxima)]
[(longitud_máxima)]
•• LONG
LONG
•• LONG
LONG RAW
RAW
•• BOOLEAN
BOOLEAN
•• BINARY_INTEGER
BINARY_INTEGER
3-17
Copyright  Oracle Corporation, 1998. All rights reserved.
Declaración de Variables Escalares
Ejemplo:
Ejemplo:
v_job
v_job
v_count
v_count
v_total_sal
v_total_sal
v_orderdate
v_orderdate
c_tax_rate
c_tax_rate
v_valid
v_valid
3-18
VARCHAR2(9);
VARCHAR2(9);
BINARY_INTEGER
BINARY_INTEGER :=
:= 0;
0;
NUMBER(9,2)
NUMBER(9,2) :=
:= 0;
0;
DATE
DATE :=
:= SYSDATE
SYSDATE ++ 7;
7;
CONSTANT
CONSTANT NUMBER(3,2)
NUMBER(3,2) :=
:= 8.25;
8.25;
BOOLEAN
BOOLEAN NOT
NOT NULL
NULL :=
:= TRUE;
TRUE;
Copyright  Oracle Corporation, 1998. All rights reserved.
El Atributo %TYPE
•
Declarar una variable basada en:
– Otras variables previamente
declaradas.
– La definición de una columna de la
base de datos.
•
Preceder %TYPE por:
– La tabla y la columna de la base de
datos.
– El nombre de la variable definida con
anterioridad.
3-19
Copyright  Oracle Corporation, 1998. All rights reserved.
Declaración de Variables con el
Atributo %TYPE
Ejemplo:
Ejemplo:
...
...
v_ename
v_ename
v_balance
v_balance
v_min_balance
v_min_balance
...
...
3-20
emp.ename%TYPE;
emp.ename%TYPE;
NUMBER(7,2);
NUMBER(7,2);
v_balance%TYPE
v_balance%TYPE :=
:= 10;
10;
Copyright  Oracle Corporation, 1998. All rights reserved.
Declaración de Var. BOOLEAN
•• A
A una
una variable
variable Boolean
Boolean sólo
sólo se
se le
le
pueden
pueden asignar
asignar los
los valores:
valores: TRUE,
TRUE,
FALSE
FALSE o
o NULL.
NULL.
•• Las
Las variables
variables están
están conectadas
conectadas por
por los
los
operadores
operadores lógicos
lógicos AND,
AND, OR,
OR, yy NOT.
NOT.
•• Las
Las variables
variables siempre
siempre valen
valen TRUE,
TRUE,
FALSE,
FALSE, o
o NULL.
NULL.
•• Las
Las expresiones
expresiones aritméticas,
aritméticas, de
de
carácter
carácter yy fecha,
fecha, pueden
pueden devolver
devolver un
un
valor
valor Boolean.
Boolean.
3-21
Copyright  Oracle Corporation, 1998. All rights reserved.
Tipos de Datos Compuestos
Tipos:
Tipos:
•• TABLAS
TABLAS PL/SQL
PL/SQL
•• REGISTROS
REGISTROS PL/SQL
PL/SQL
3-22
Copyright  Oracle Corporation, 1998. All rights reserved.
Variables LOB
Fórmula
-recipe(CLOB)
Foto
(BLOB)
Película
(BFILE)
NCLOB
3-23
Copyright  Oracle Corporation, 1998. All rights reserved.
Variables de Enlace (Bind)
Variable Bind del
Sistema Operativo
Server
3-24
Copyright  Oracle Corporation, 1998. All rights reserved.
Referenciando Variables
No-PL/SQL
Almacenar
Almacenar el
el salario
salario anual
anual en
en una
una variable
variable
global
global de
de SQL*Plus.
SQL*Plus.
:g_monthly_sal
:g_monthly_sal :=
:= v_sal
v_sal // 12;
12;
•• Referenciar
Referenciar variables
variables no-PL/SQL
no-PL/SQL como
como
variables
variables Host.
Host.
•• Preceder
Preceder las
las referencias
referencias con
con dos
dos puntos
puntos (( :: ))
3-25
Copyright  Oracle Corporation, 1998. All rights reserved.
Resumen
•• Bloques
Bloques PL/SQL
PL/SQL
–– Compuestos
Compuestos de
de las
las secciones:
secciones:
–– Declarativa
Declarativa (opcional).
(opcional).
–– Ejecutable
Ejecutable (obligatoria).
(obligatoria).
–– Manejo
Manejo de
de Excepciones
Excepciones (opcional).
(opcional).
–– Pueden
Pueden ser
ser un
un bloque
bloque
anónimo,
anónimo, procedimiento
procedimiento o
o
función..
función..
3-26
Copyright  Oracle Corporation, 1998. All rights reserved.
DECLARE
BEGIN
EXCEPTION
END;
Resumen
•• Identificadores
Identificadores PL/SQL:
PL/SQL:
–– Definidos
Definidos en
en la
la sección
sección DECLARE.
DECLARE.
–– Pueden
Pueden ser:
ser: escalar,
escalar, compuesto,
compuesto,
referenciado
referenciado o
o LOB.
LOB.
–– Pueden
Pueden estar
estar basados
basados en
en la
la
estructura
estructura de
de otra
otra variable
variable u
u objeto
objeto
de
de la
la B.D.
B.D.
–– Pueden
Pueden ser
ser inicializados.
inicializados.
3-27
Copyright  Oracle Corporation, 1998. All rights reserved.
Visión General de la Práctica
•• Determinar
Determinar la
la validez
validez de
de declaraciones.
declaraciones.
•• Desarrollo
Desarrollo de
de un
un bloque
bloque PL/SQL
PL/SQL simple.
simple.
3-28
Copyright  Oracle Corporation, 1998. All rights reserved.
Descargar