Copyright Oracle Corporation, 1998. All rights reserved. 3 3 Declaración de Variables Declaración de Variables
Copyright Oracle Corporation, 1998. All rights reserved.
33
Declaración de VariablesDeclaración de Variables
3-2 Copyright Oracle Corporation, 1998. All rights reserved.
ObjetivosObjetivosAl completar esta lección, debería ser capaz de hacer lo siguiente:
• Reconocer las bases del bloque PL/SQL y sus secciones.
• Describir el significado de las variables en PL/SQL
• Distinguir entre variables PL/SQL y no PL/SQL.
• Declarar variables PL/SQL
• Ejecutar un bloque PL/SQL
Al completar esta lecciAl completar esta lecci óón, debern, deber íía ser a ser capaz de hacer lo siguiente:capaz de hacer lo siguiente:
• Reconocer las bases del bloque PL/SQL y sus secciones.
• Describir el significado de las variables en PL/SQL
• Distinguir entre variables PL/SQL y no PL/SQL.
• Declarar variables PL/SQL
• Ejecutar un bloque PL/SQL
3-3 Copyright Oracle Corporation, 1998. All rights reserved.
Estrucutra del Bloque PL/SQLEstrucutra del Bloque PL/SQL
• DECLARE – Opcional
– Variables, cursores, excepciones definidas por el usuario
• BEGIN – Obligatorio
– Sentencias SQL
– Sentencias de Control PL/SQL
• EXCEPTION – Opcional
– Acciones a realizar cuando se produzcan errores
• END; – Obligatorio
• DECLARE – Opcional
– Variables, cursores, excepciones definidas por el usuario
• BEGIN – Obligatorio
– Sentencias SQL
– Sentencias de Control PL/SQL
• EXCEPTION – Opcional
– Acciones a realizar cuando se produzcan errores
• END; – Obligatorio
DECLAREDECLARE
BEGINBEGIN
EXCEPTIONEXCEPTION
END;END;
3-4 Copyright Oracle Corporation, 1998. All rights reserved.
Estructura de un Bloque PL/SQLEstructura de un Bloque PL/SQL
DECLAREv_variable VARCHAR2(5);
BEGINSELECT column_name
INTO v_variableFROM table_name
EXCEPTIONWHEN exception_name THEN...
END;
DECLAREv_variable VARCHAR2(5);
BEGINSELECT column_name
INTO v_variableFROM table_name
EXCEPTIONWHEN exception_name THEN...
END;
DECLAREDECLARE
BEGINBEGIN
EXCEPTIONEXCEPTION
END;END;
3-5 Copyright Oracle Corporation, 1998. All rights reserved.
Tipos de BloquesTipos de Bloques
AnAn óónimonimo ProcedimientoProcedimiento FunciFunci óónn
[DECLARE]
BEGIN--statements
[EXCEPTION]
END;
[DECLARE][DECLARE]
BEGINBEGIN---- statementsstatements
[EXCEPTION][EXCEPTION]
END;END;
PROCEDURE nameIS
BEGIN--statements
[EXCEPTION]
END;
PROCEDURE namePROCEDURE nameISIS
BEGINBEGIN---- statementsstatements
[EXCEPTION][EXCEPTION]
END;END;
FUNCTION nameRETURN datatypeISBEGIN
--statementsRETURN value;
[EXCEPTION]
END;
FUNCTION nameFUNCTION nameRETURN datatypeRETURN datatypeISISBEGINBEGIN
---- statementsstatementsRETURN value;RETURN value;
[EXCEPTION][EXCEPTION]
END;END;
3-6 Copyright Oracle Corporation, 1998. All rights reserved.
ProgramasProgramas
Anonymousblock
AnonymousAnonymousblockblock
Applicationtrigger
ApplicationApplicationtriggertrigger
Stored procedure/
function
Stored Stored procedure/procedure/
functionfunction
Databasetrigger
DatabaseDatabasetriggertrigger
Applicationprocedure/
function
ApplicationApplicationprocedure/procedure/
functionfunction
Packagedprocedure/
function
PackagedPackagedprocedure/procedure/
functionfunction
DECLAREDECLARE
BEGINBEGIN
EXCEPTIONEXCEPTION
END;END;
3-7 Copyright Oracle Corporation, 1998. All rights reserved.
Uso de VariablesUso de Variables
Use variables para:
• Almacenamiento temporal de datos.
• Manipulación de valores almacenados.
• Reusabilidad.
• Fácil mantenimiento.
Use variables para:Use variables para:
• Almacenamiento temporal de datos.
• Manipulación de valores almacenados.
• Reusabilidad.
• Fácil mantenimiento.
3-8 Copyright Oracle Corporation, 1998. All rights reserved.
Gestión de Variables en PL/SQLGestión de Variables en PL/SQL
•• Declarar e inicializar las variables Declarar e inicializar las variables dentro de la seccidentro de la secci óón de declaracin de declaraci óón.n.
•• Asignar nuevos valores a las variables Asignar nuevos valores a las variables dentro de la seccidentro de la secci óón de cn de c óódigo.digo.
•• Pasar valores a los bloques PL/SQL a Pasar valores a los bloques PL/SQL a travtrav éés de los pars de los par áámetros.metros.
•• Ver los resultados a travVer los resultados a trav éés de variables s de variables de salida.de salida.
3-9 Copyright Oracle Corporation, 1998. All rights reserved.
Tipos de VariablesTipos de Variables
• Variables PL/SQL
– Escalar
– Compuesta
– Referenciada
– LOB (large objects)
• Variable No -PL/SQL
– Variables de Enlace (bind) y Host
• Variables PL/SQL
– Escalar
– Compuesta
– Referenciada
– LOB (large objects)
• Variable No -PL/SQL
– Variables de Enlace (bind) y Host
3-10 Copyright Oracle Corporation, 1998. All rights reserved.
TRUETRUE
Tipos de VariablesTipos de Variables
25-OCT-9925-OCT-99
AtlantaAtlanta
“Four score and seven years ago
our fathers brought forth upon
this continent, a new nation,
conceived in LIBERTY, and dedicated
to the proposition that all men
are created equal.”256120.08256120.08
3-11 Copyright Oracle Corporation, 1998. All rights reserved.
Declaración de Variables PL/SQL
Declaración de Variables PL/SQL
Sintaxis
Ejemplos
SintaxisSintaxis
EjemplosEjemplos
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
Declarev_hiredate DATE;v_deptno NUMBER(2) NOT NULL := 10;v_location VARCHAR2(13) := ' Atlanta ' ;c_ comm CONSTANT NUMBER := 1400;
Declarev_hiredate DATE;v_deptno NUMBER(2) NOT NULL := 10;v_location VARCHAR2(13) := ' Atlanta ' ;c_ comm CONSTANT NUMBER := 1400;
3-12 Copyright Oracle Corporation, 1998. All rights reserved.
Declaración de Variables PL/SQL
Declaración de Variables PL/SQL
RecomendacionesRecomendaciones
•• Seguir las convenciones de nombres.Seguir las convenciones de nombres.
•• Inicializar las constantes y variables Inicializar las constantes y variables designadas como NOT NULL.designadas como NOT NULL.
•• Inicializar los identificadores usando el Inicializar los identificadores usando el operador de asignacioperador de asignaci óón (:=) o la palabra n (:=) o la palabra reservada DEFAULT.reservada DEFAULT.
•• Declarar a lo sumo un identificador por Declarar a lo sumo un identificador por ll íínea.nea.
3-13 Copyright Oracle Corporation, 1998. All rights reserved.
Reglas para NombresReglas para Nombres
• Dos variables pueden tener el mismo nombre, si están en bloques diferentes.
• El nombre de la variable (identificador) no debería ser el mismo que el de una columna de una tabla utilizada en el bloque.
• Dos variables pueden tener el mismo nombre, si están en bloques diferentes.
• El nombre de la variable (identificador) no debería ser el mismo que el de una columna de una tabla utilizada en el bloque. DECLARE
empno NUMBER(4);BEGIN
SELECT empnoINTO empno
FROM empWHERE ename = ' SMITH' ;
END;
DECLAREempno NUMBER(4);
BEGINSELECT empno
INTO empnoFROM empWHERE ename = ' SMITH' ;
END;
3-14 Copyright Oracle Corporation, 1998. All rights reserved.
Asignación de Valores a VariablesAsignación de Valores a Variables
v_ename := 'Maduro';v_ename := 'Maduro';
v_hiredate := ' 31-DEC-1998 ' ;v_hiredate := ' 31-DEC-1998 ' ;
Sintaxis:
Ejemplo:
Establecer una fecha de alta por defecto, para los nuevos empleados:
Sintaxis: Sintaxis:
Ejemplo: Ejemplo:
Establecer una fecha de alta por defecto, Establecer una fecha de alta por defecto, para los nuevos empleados: para los nuevos empleados:
Asignar el apellido “Maduro ” a un empleado: Asignar el apellido Asignar el apellido ““ MaduroMaduro ”” a un a un empleado: empleado:
identifier := expr;identifier := expr;
3-15 Copyright Oracle Corporation, 1998. All rights reserved.
Inicialización de Variables y Palabras Clave (keywords)
Inicialización de Variables y Palabras Clave (keywords)
Uso:• := Operador de Asignación
• DEFAULT
• NOT NULL
Uso:• := Operador de Asignación
• DEFAULT
• NOT NULL
3-16 Copyright Oracle Corporation, 1998. All rights reserved.
Variables EscalaresVariables Escalares
• Mantienen un único valor.
• No tienen componentes internos.
• Mantienen un único valor.
• No tienen componentes internos.
25-OCT-9925-OCT-99
AtlantaAtlanta
“Four score and seven years
ago our fathers brought
forth upon this continent, a
new nation, conceived in
LIBERTY, and dedicated to
the proposition that all men
are created equal.”
TRUETRUE
256120.08256120.08
3-17 Copyright Oracle Corporation, 1998. All rights reserved.
Principales Variables EscalaresPrincipales Variables Escalares
• VARCHAR2( longitud_m áxima )
• NUMBER [(precisión, escala )]
• DATE
• CHAR [( longitud_m áxima )]
• LONG
• LONG RAW
• BOOLEAN
• BINARY_INTEGER
• VARCHAR2( longitud_m áxima )
• NUMBER [(precisión, escala )]
• DATE
• CHAR [( longitud_m áxima )]
• LONG
• LONG RAW
• BOOLEAN
• BINARY_INTEGER
3-18 Copyright Oracle Corporation, 1998. All rights reserved.
Declaración de Variables EscalaresDeclaración de Variables Escalares
v_job VARCHAR2(9);v_count BINARY_INTEGER := 0;v_total_sal NUMBER(9,2) := 0;v_orderdate DATE := SYSDATE + 7;c_tax_rate CONSTANT NUMBER(3,2) := 8.25;v_valid BOOLEAN NOT NULL := TRUE;
v_job VARCHAR2(9);v_count BINARY_INTEGER := 0;v_total_sal NUMBER(9,2) := 0;v_orderdate DATE := SYSDATE + 7;c_tax_rate CONSTANT NUMBER(3,2) := 8.25;v_valid BOOLEAN NOT NULL := TRUE;
Ejemplo:Ejemplo:Ejemplo:
3-19 Copyright Oracle Corporation, 1998. All rights reserved.
El Atributo %TYPEEl Atributo %TYPE•• Declarar una variable basada en:Declarar una variable basada en:
––Otras variables previamente Otras variables previamente declaradas.declaradas.
––La definiciLa definici óón de una columna de la n de una columna de la base de datos.base de datos.
•• Preceder %TYPE por:Preceder %TYPE por:
––La tabla y la columna de la base de La tabla y la columna de la base de datos.datos.
––El nombre de la variable definida con El nombre de la variable definida con anterioridad.anterioridad.
3-20 Copyright Oracle Corporation, 1998. All rights reserved.
Declaración de Variables con el Atributo %TYPE
Declaración de Variables con el Atributo %TYPE
Ejemplo: Ejemplo: Ejemplo:
...v_ename emp.ename%TYPE;v_balance NUMBER(7,2);v_min_balance v_balance%TYPE := 10;
...
...v_ename emp.ename%TYPE;v_balance NUMBER(7,2);v_min_balance v_balance%TYPE := 10;
...
3-21 Copyright Oracle Corporation, 1998. All rights reserved.
Declaración de Var. BOOLEANDeclaración de Var. BOOLEAN
• A una variable Boolean sólo se le pueden asignar los valores: TRUE, FALSE o NULL.
• Las variables están conectadas por los operadores lógicos AND, OR, y NOT.
• Las variables siempre valen TRUE, FALSE, o NULL.
• Las expresiones aritm éticas, de carácter y fecha, pueden devolver un valor Boolean.
• A una variable Boolean sólo se le pueden asignar los valores: TRUE, FALSE o NULL.
• Las variables están conectadas por los operadores lógicos AND, OR, y NOT.
• Las variables siempre valen TRUE, FALSE, o NULL.
• Las expresiones aritm éticas, de carácter y fecha, pueden devolver un valor Boolean.
3-22 Copyright Oracle Corporation, 1998. All rights reserved.
Tipos de Datos CompuestosTipos de Datos Compuestos
Tipos:
• TABLAS PL/SQL
• REGISTROS PL/SQL
Tipos:Tipos:
• TABLAS PL/SQL
• REGISTROS PL/SQL
3-23 Copyright Oracle Corporation, 1998. All rights reserved.
Variables LOBVariables LOBFFóórmularmula--reciperecipe --(CLOB)(CLOB)
FotoFoto(BLOB)(BLOB)
PelPelíículacula(BFILE)(BFILE)
NCLOBNCLOB
3-24 Copyright Oracle Corporation, 1998. All rights reserved.
Variables de Enlace (Bind)Variables de Enlace (Bind)
Server
Variable Bind delVariable Bind delSistema OperativoSistema Operativo
3-25 Copyright Oracle Corporation, 1998. All rights reserved.
Referenciando Variables No-PL/SQL
Referenciando Variables No-PL/SQL
Almacenar el salario anual en una variable global de SQL*Plus.
• Referenciar variables no -PL/SQL como variables Host.
• Preceder las referencias con dos puntos ( : )
Almacenar el salario anual en una variable Almacenar el salario anual en una variable global de SQL*Plus.global de SQL*Plus.
• Referenciar variables no -PL/SQL como variables Host.
• Preceder las referencias con dos puntos ( : )
:g_monthly_sal := v_sal / 12;:g_monthly_sal := v_sal / 12;
3-26 Copyright Oracle Corporation, 1998. All rights reserved.
ResumenResumen
• Bloques PL/SQL
– Compuestos de las secciones: – Declarativa (opcional).– Ejecutable (obligatoria).– Manejo de Excepciones (opcional).
– Pueden ser un bloque anónimo, procedimiento o función..
• Bloques PL/SQL
– Compuestos de las secciones: – Declarativa (opcional).– Ejecutable (obligatoria).– Manejo de Excepciones (opcional).
– Pueden ser un bloque anónimo, procedimiento o función..
DECLAREDECLARE
BEGINBEGIN
EXCEPTIONEXCEPTION
END;END;
3-27 Copyright Oracle Corporation, 1998. All rights reserved.
ResumenResumen
• Identificadores PL/SQL:
– Definidos en la sección DECLARE.
– Pueden ser: escalar, compuesto, referenciado o LOB.
– Pueden estar basados en la estructura de otra variable u objeto de la B.D.
– Pueden ser inicializados.
• Identificadores PL/SQL:
– Definidos en la sección DECLARE.
– Pueden ser: escalar, compuesto, referenciado o LOB.
– Pueden estar basados en la estructura de otra variable u objeto de la B.D.
– Pueden ser inicializados.