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.