Declaración de Variables - Andròmines · PDF file3-21 Copyright Oracle...

28
Copyright Oracle Corporation, 1998. All rights reserved. 3 3 Declaración de Variables Declaración de Variables

Transcript of Declaración de Variables - Andròmines · PDF file3-21 Copyright Oracle...

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.

3-28 Copyright Oracle Corporation, 1998. All rights reserved.

Visión General de la PrácticaVisión General de la Práctica

• Determinar la validez de declaraciones.

• Desarrollo de un bloque PL/SQL simple.

• Determinar la validez de declaraciones.

• Desarrollo de un bloque PL/SQL simple.