Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando...

24
Copyright Oracle Corporation, 1998. All rights reserved. 4 4 Sentencias Ejecutables Sentencias Ejecutables

Transcript of Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando...

Page 1: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

Copyright Oracle Corporation, 1998. All rights reserved.

44

Sentencias EjecutablesSentencias Ejecutables

Page 2: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-2 Copyright Oracle Corporation, 1998. All rights reserved.

ObjetivosObjetivos

Al final de esta lección usted podrá:

• Reconocer el significado de la sección ejecutable

• Escribir sentencias en la sección ejecutable

• Describir las reglas de bloques anidados

• Ejecutar y comprobar un bloque PL/SQL

• Utilizar convenciones de codificación

Al final de esta lecciAl final de esta lecci óón usted podrn usted podr áá::

• Reconocer el significado de la sección ejecutable

• Escribir sentencias en la sección ejecutable

• Describir las reglas de bloques anidados

• Ejecutar y comprobar un bloque PL/SQL

• Utilizar convenciones de codificación

Page 3: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

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

Anatom ía de un Bloque PL/SQLAnatom ía de un Bloque PL/SQL• DECLARE – Opcional

– Variables, constantes, cursores, excepciones definidas por el usuario

• BEGIN – Obligatorio

– Sentencias SQL

– Sentencias de control PL/SQL

• EXCEPTION – Opcional

– Acciones que se ejecutarán cuando se produzcan errores

• END; – Obligatorio

• DECLARE – Opcional

– Variables, constantes, cursores, excepciones definidas por el usuario

• BEGIN – Obligatorio

– Sentencias SQL

– Sentencias de control PL/SQL

• EXCEPTION – Opcional

– Acciones que se ejecutarán cuando se produzcan errores

• END; – Obligatorio

DECLAREDECLARE

BEGINBEGIN

EXCEPTIONEXCEPTION

END;END;

DECLAREv_variable VARCHAR2(5)

BEGINSELECT column_name

INTO v_variableFROM table_name

END;

DECLAREv_variable VARCHAR2(5)

BEGINSELECT column_name

INTO v_variableFROM table_name

END;

Page 4: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-4 Copyright Oracle Corporation, 1998. All rights reserved.

Sintaxis y Directrices del Bloque PL/SQL

Sintaxis y Directrices del Bloque PL/SQL

• Las sentencias pueden continuar en varias líneas.

• Las unidades léxicas pueden separarse por medio de espacios:

– Delimitadores

– Identificadores

– Literales

– Comentarios

• Las sentencias pueden continuar en varias líneas.

• Las unidades léxicas pueden separarse por medio de espacios:

– Delimitadores

– Identificadores

– Literales

– Comentarios

Page 5: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-5 Copyright Oracle Corporation, 1998. All rights reserved.

Sintaxis y Directrices del Bloque PL/SQL

Sintaxis y Directrices del Bloque PL/SQL

Identificadores

• Pueden contener hasta 30 caracteres.

• No pueden contener palabras reservadas a menos que estén entre dobles comillas.

• Deben comenzar con un caracter alfab ético.

• Su nombre no debería coincidir con el de una columna de tabla de base de datos.

IdentificadoresIdentificadores

• Pueden contener hasta 30 caracteres.

• No pueden contener palabras reservadas a menos que estén entre dobles comillas.

• Deben comenzar con un caracter alfab ético.

• Su nombre no debería coincidir con el de una columna de tabla de base de datos.

Page 6: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-6 Copyright Oracle Corporation, 1998. All rights reserved.

Sintaxis y Directrices del Bloque PL/SQL

Sintaxis y Directrices del Bloque PL/SQL

Literales

• Los literales de fecha y de caracteres deben estar entre comillas simples.

• Los n úmeros pueden ser valores simples o una notación científica.

LiteralesLiterales

• Los literales de fecha y de caracteres deben estar entre comillas simples.

• Los n úmeros pueden ser valores simples o una notación científica.

v_ename := 'Henderson';v_ename := 'Henderson';

Page 7: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-7 Copyright Oracle Corporation, 1998. All rights reserved.

Código de ComentarioCódigo de Comentario

• Anteponga a los comentarios de una sola línea dos guiones (- -) a modo de prefijo.

• Coloque los comentarios de varias líneas entre los símbolos /* y */.

Ejemplo

• Anteponga a los comentarios de una sola línea dos guiones (- -) a modo de prefijo.

• Coloque los comentarios de varias líneas entre los símbolos /* y */.

EjemploEjemplo

...v_sal NUMBER (9,2);

BEGIN/* Compute the annual salary based on the

monthly salary input from the user */v_sal := v_sal * 12;

END; -- This is the end of the transaction

...v_sal NUMBER (9,2);

BEGIN/* Compute the annual salary based on the

monthly salary input from the user */v_sal := v_sal * 12;

END; -- This is the end of the transaction

Page 8: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-8 Copyright Oracle Corporation, 1998. All rights reserved.

Funciones SQL en PL/SQLFunciones SQL en PL/SQL• Disponibles:

– Número de una fila

– Caracter de una fila

– Conversión de tipos de datos

– Fecha

• No disponibles:

– GREATEST

– LEAST

– Funciones de grupo

• Disponibles:

– Número de una fila

– Caracter de una fila

– Conversión de tipos de datos

– Fecha

• No disponibles:

– GREATEST

– LEAST

– Funciones de grupo

Igual que en SQL}}

Page 9: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-9 Copyright Oracle Corporation, 1998. All rights reserved.

Funciones PL/SQLFunciones PL/SQL

Ejemplos

• Genere la lista de direcciones de una empresa.

• Convierta el nombre del empleado a min úsculas.

EjemplosEjemplos

• Genere la lista de direcciones de una empresa.

• Convierta el nombre del empleado a min úsculas.

v_mailing_address := v_name||CHR(10)||

v_address||CHR(10)||v_state||

CHR(10)||v_zip;

v_mailing_address := v_name||CHR(10)||

v_address||CHR(10)||v_state||

CHR(10)||v_zip;

v_ename := LOWER(v_ename);v_ename := LOWER(v_ename);

Page 10: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-10 Copyright Oracle Corporation, 1998. All rights reserved.

Conversión de Tipos de DatosConversión de Tipos de Datos

• Convierta datos a tipos de datos comparables.

• La existencia de tipos de datos mezclados puede ocasionar un error y afectar al rendimiento.

• Funciones de conversión:

– TO_CHAR

– TO_DATE

– TO_NUMBER

• Convierta datos a tipos de datos comparables.

• La existencia de tipos de datos mezclados puede ocasionar un error y afectar al rendimiento.

• Funciones de conversión:

– TO_CHAR

– TO_DATE

– TO_NUMBER

BEGINSELECT TO_CHAR(hiredate,

'MON. DD, YYYY')FROM emp;

END;

BEGINSELECT TO_CHAR(hiredate,

'MON. DD, YYYY')FROM emp;

END;

Page 11: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-11 Copyright Oracle Corporation, 1998. All rights reserved.

Conversión de Tipos de DatosConversión de Tipos de Datos

Esta sentencia produce un error de compilación.

Para corregir el error se utiliza la función de conversión TO_CHAR.

Esta sentencia produce un error de Esta sentencia produce un error de compilacicompilaci óón.n.

Para corregir el error se utiliza la función de conversión TO_CHAR.

v_comment := USER||': '||SYSDATE;v_comment := USER||': '||SYSDATE;

v_comment := USER||': '||TO_CHAR(SYSDATE);v_comment := USER||': '||TO_CHAR(SYSDATE);

Page 12: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-12 Copyright Oracle Corporation, 1998. All rights reserved.

Bloques Anidados y Ámbito de las Variables

Bloques Anidados y Ámbito de las Variables

• Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable.

• Un bloque anidado se convierte en una sentencia.

• Una sección de excepciones puede contener bloques anidados.

• El ámbito de un objeto es la región del programa que puede hacer referencia al objeto.

• Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable.

• Un bloque anidado se convierte en una sentencia.

• Una sección de excepciones puede contener bloques anidados.

• El ámbito de un objeto es la región del programa que puede hacer referencia al objeto.

Page 13: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-13 Copyright Oracle Corporation, 1998. All rights reserved.

Bloques Anidados y Ámbito de la Variable

Bloques Anidados y Ámbito de la Variable

• Un identificador se hace visible en las regiones en las que puede hacer referencia al identificador no cualificado:

– Un bloque puede consultar el bloque del que forma parte.

– Un bloque no puede consultar los subbloques que contiene.

• Un identificador se hace visible en las regiones en las que puede hacer referencia al identificador no cualificado:

– Un bloque puede consultar el bloque del que forma parte.

– Un bloque no puede consultar los subbloques que contiene.

Page 14: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-14 Copyright Oracle Corporation, 1998. All rights reserved.

Bloques Anidados y Ámbito de la Variable

Bloques Anidados y Ámbito de la Variable

...x BINARY_INTEGER;

BEGIN...DECLARE

y NUMBER;BEGIN

...END;...

END;

...x BINARY_INTEGER;

BEGIN...DECLARE

y NUMBER;BEGIN

...END;...

END;

Ámbito de y

Ámbito de x

EjemploEjemplo

Page 15: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-15 Copyright Oracle Corporation, 1998. All rights reserved.

Operadores de PL/SQLOperadores de PL/SQL

• Lógico

• Arim ético

• De concatenación

• Paréntesis para controlar el orden de operaciones

• Operador exponencial (**)

• Lógico

• Arim ético

• De concatenación

• Paréntesis para controlar el orden de operaciones

• Operador exponencial (**)

Como en SQL

Page 16: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-16 Copyright Oracle Corporation, 1998. All rights reserved.

Ejemplos

• Aumente el índice de un bucle.

• Establezca el valor de un indicador booleano.

• Valide un n úmero de empleado si contiene un valor.

EjemplosEjemplos

• Aumente el índice de un bucle.

• Establezca el valor de un indicador booleano.

• Valide un n úmero de empleado si contiene un valor.

Operadores de PL/SQLOperadores de PL/SQL

v_count := v_count + 1;v_count := v_count + 1;

v_equal := (v_n1 = v_n2);v_equal := (v_n1 = v_n2);

v_valid := (v_empno IS NOT NULL);v_valid := (v_empno IS NOT NULL);

Page 17: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-17 Copyright Oracle Corporation, 1998. All rights reserved.

Variables de SustituciónVariables de Sustitución

Para hacer referencia a una variable de susticuión en PL/SQL debe anteponer a su nombre dos puntos (:) a modo de prefijo.

Ejemplo

Para hacer referencia a una variable de Para hacer referencia a una variable de susticuisusticui óón en PL/SQL debe anteponer a su n en PL/SQL debe anteponer a su nombre dos puntos (:) a modo de prefijo.nombre dos puntos (:) a modo de prefijo.

EjemploEjemplo:return_code := 0;IF credit_check_ok(acct_no) THEN

:return_code := 1;END IF;

:return_code := 0;IF credit_check_ok(acct_no) THEN

:return_code := 1;END IF;

Page 18: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-18 Copyright Oracle Corporation, 1998. All rights reserved.

Directrices de ProgramaciónDirectrices de Programación

Facilite el mantenimiento del código

• Documentando el código con comentarios.

• Desarrollando una convención de mayúsculas/min úsculas para el código.

• Desarrollando convenciones de nomenclatura para los identificadores y otros objetos.

• Sangrando para facilitar la lectura.

Facilite el mantenimiento del cFacilite el mantenimiento del c óódigodigo

• Documentando el código con comentarios.

• Desarrollando una convención de mayúsculas/min úsculas para el código.

• Desarrollando convenciones de nomenclatura para los identificadores y otros objetos.

• Sangrando para facilitar la lectura.

Page 19: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-19 Copyright Oracle Corporation, 1998. All rights reserved.

Convenciones de Nomenclatura del Código

Convenciones de Nomenclatura del Código

Evite la ambig üedad:

• Los nombres de variables locales y parámetros formales tienen prioridad sobre los nombres de tablas de bases de datos.

• Los nombres de columnas tienen prioridad sobre los nombres de variables locales.

Evite la ambigEvite la ambig üüedad:edad:

• Los nombres de variables locales y parámetros formales tienen prioridad sobre los nombres de tablas de bases de datos.

• Los nombres de columnas tienen prioridad sobre los nombres de variables locales.

Page 20: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-20 Copyright Oracle Corporation, 1998. All rights reserved.

Código de SangradoCódigo de Sangrado

Para obtener mayor claridad, sangre cada nivel de código.

Ejemplo

Para obtener mayor claridad, sangre cada Para obtener mayor claridad, sangre cada nivel de cnivel de c óódigo.digo.

EjemploEjemploBEGIN

IF x=0 THENy=1;

END IF;END;

BEGINIF x=0 THEN

y=1;END IF;

END;

DECLAREv_detpno NUMBER(2);v_location VARCHAR2(13);

BEGINSELECT deptno,

locationINTO v_deptno,

v_locationFROM deptWHERE dname = 'SALES';

...END;

DECLAREv_detpno NUMBER(2);v_location VARCHAR2(13);

BEGINSELECT deptno,

locationINTO v_deptno,

v_locationFROM deptWHERE dname = 'SALES';

...END;

Page 21: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-21 Copyright Oracle Corporation, 1998. All rights reserved.

Determine el Ámbito de la VariableDetermine el Ámbito de la VariableEjercicio de claseEjercicio de claseEjercicio de clase

...DECLAREV_SAL NUMBER(7,2) := 60000;V_COMM NUMBER(7,2) := V_SAL / .20;V_MESSAGE VARCHAR2(255) := ‘ eligible for commission’ ;BEGIN ...

DECLAREV_SAL NUMBER(7,2) := 50000;V_COMM NUMBER(7,2) := 0;V_TOTAL_COMP NUMBER(7,2) := V_SAL + V_COMM;

BEGIN ...V_MESSAGE := ‘CLERK not’||V_MESSAGE;

END;

V_MESSAGE := ‘SALESMAN’||’V_MESSAGE;END;

...DECLAREV_SAL NUMBER(7,2) := 60000;V_COMM NUMBER(7,2) := V_SAL / .20;V_MESSAGE VARCHAR2(255) := ‘ eligible for commission’ ;BEGIN ...

DECLAREV_SAL NUMBER(7,2) := 50000;V_COMM NUMBER(7,2) := 0;V_TOTAL_COMP NUMBER(7,2) := V_SAL + V_COMM;

BEGIN ...V_MESSAGE := ‘CLERK not’||V_MESSAGE;

END;

V_MESSAGE := ‘SALESMAN’||’V_MESSAGE;END;

Page 22: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-22 Copyright Oracle Corporation, 1998. All rights reserved.

ResumenResumen

• Los bloques PL/SQL se componen de las siguientes secciones:

– Declarativa (opcional)

– Ejecutable (necesaria)

– Gestión de excepciones (opcional)

• Estructura del bloque PL/SQL:

– Bloques anidados y reglas de ámbito

– Bloques de ejecución

• Los bloques PL/SQL se componen de las siguientes secciones:

– Declarativa (opcional)

– Ejecutable (necesaria)

– Gestión de excepciones (opcional)

• Estructura del bloque PL/SQL:

– Bloques anidados y reglas de ámbito

– Bloques de ejecución

DECLAREDECLARE

BEGINBEGIN

EXCEPTIONEXCEPTION

END;END;

Page 23: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-23 Copyright Oracle Corporation, 1998. All rights reserved.

ResumenResumen

• Programación PL/SQL:

– Símbolos

– Funciones

– Conversiones de tipos de datos

– Operadores

– Variables de sustitución

– Convenciones y directrices

• Programación PL/SQL:

– Símbolos

– Funciones

– Conversiones de tipos de datos

– Operadores

– Variables de sustitución

– Convenciones y directrices

DECLAREDECLARE

BEGINBEGIN

EXCEPTIONEXCEPTION

END;END;

Page 24: Sentencias Ejecutables - WordPress.com2012/03/04  · • Las sentencias pueden ser anidadas cuando esté permitida una sentencia ejecutable. • Un bloque anidado se convierte en

4-24 Copyright Oracle Corporation, 1998. All rights reserved.

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

• Revisión de reglas de anidamiento y ámbito

• Desarrollo y prueba de los bloques PL/SQL

• Revisión de reglas de anidamiento y ámbito

• Desarrollo y prueba de los bloques PL/SQL