Your SlideShare is downloading. ×
0
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Capitulo 2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Capitulo 2

1,540

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
1,540
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Escribiendo declaraciones ejecutables
  • 2. <ul><li>Después de completar ésta lección, usted deberá poder hacer lo siguiente: </li></ul><ul><li>Describir el significado de la sección ejecutable </li></ul><ul><li>Usar correctamente los identificadores </li></ul><ul><li>Escribir declaraciones en la sección ejecutable </li></ul><ul><li>Describir los roles de los bloques anidados </li></ul><ul><li>Ejecutar y hacer pruebas en bloques PL/SQL </li></ul><ul><li>Usar convención de códigos </li></ul><ul><li>Objetivo de la lección </li></ul><ul><li>En ésta lección, usted aprenderá a como escribir código ejecutable en el bloque PL/SQL. Usted también aprenderá los roles de código de los bloques anidados en PL/SQL, así como ejecutar y realizar pruebas con el código PL/SQL. </li></ul>
  • 3. <ul><li>Porque PL/SQL es una extensión de SQL, las normativas generales de sintaxis de SQL también se aplican al lenguaje PL/SQL. </li></ul><ul><li>La línea de texto de PL/SQL contiene grupo de caracteres conocidos como unidades léxicas, estos pueden clasificarse en los siguientes: </li></ul><ul><ul><li>Delimitadores (símbolos simples y compuestos) </li></ul></ul><ul><ul><li>Identificadores, incluyen palabras reservadas </li></ul></ul><ul><ul><li>Literales </li></ul></ul><ul><ul><li>Comentarios </li></ul></ul><ul><li>Para mejorar la legibilidad, usted puede separar con espacios las unidades léxicas. De hecho, se debe separar los identificadores adyacentes por un espacio o puntuación </li></ul><ul><li>No se debe incrustar espacios en unidades léxicas excepto para cadenas de literales y comentarios </li></ul><ul><li>Las sentencias pueden separare al otro lado de la línea, pero palabras reservadas no se pueden separar </li></ul>
  • 4. <ul><li>Los delimitadores son símbolos simples y compuestos que tienen un significado especial en PL/SQL </li></ul><ul><li>símbolos simples símbolos compuestos </li></ul>Símbolos Significado + Operador de adición - Operador sustractor, negador * Operador de multiplicación / Operador de división = Operador relacional @ Identificador de acceso remoto ; Terminador de sentencias Símbolos Significado <> Operador relacional != Operador relacional || Operador de concatenación -- Identificador de comentario de línea simple /* Empieza el delimitador de comentario */ Termina el delimitador de comentario := Operador de asignación
  • 5. <ul><li>Los identificadores se usan para nombrar ítems de programas y unidades de PL/SQL. Pueden incluir constantes, variables, excepciones, cursores, cursores variables, subprogramas y paquetes. </li></ul><ul><li>Los identificadores pueden contener hasta de 30 caracteres, pero deben empezar con caracteres alfabéticos. </li></ul><ul><li>No se debe elegir el mismo nombre para el identificador como el nombre de columna de la tabla usada en el bloque. Si el identificador PL/SQL es el mismo que el de las sentencias SQL y tiene el mismo nombre de la columna. Entonces Oracle asume que ésta columna es referenciada </li></ul><ul><li>Un identificador consiste de una letra, opcionalmente seguida de más letras, numerales, signo de dólar, raya abajo, y signos de número. Otros caracteres tal como guiones, slashes, y espacios son ilegales, los siguientes ejemplos muestran: </li></ul><ul><li>dots&dashes -- illegal ampersand </li></ul><ul><li>debit-amount -- illegal guión </li></ul><ul><li>on/of -- illegal slash </li></ul><ul><li>user id -- illegal espacio </li></ul><ul><li>Los ejemplos money$$$treee, SN##, try _again_are muestran que contiguo a signos de dólar, raya abajo y signos de dólar son permitidos </li></ul>
  • 6. <ul><li>Un literal es un valor de número explicito, carácter, cadena o booleano que no es representado por un identificador </li></ul><ul><li>Un carácter literal incluye todos caracteres imprimibles en PL/SQL caracteres como: letras, numerales, espacios y símbolos especiales </li></ul><ul><li>Un literal numérico puede ser representado como un simple valor (por ejemplo, -32.5) o en notación científica (por ejemplo, 2E5, significa 2*(10 a la potencia de 5) = 200000). </li></ul><ul><li>Un programa PL/SQL es terminado y ejecutado con un slash (/) </li></ul>
  • 7. <ul><li>Comentar código de documento cada fase y ayudar a depurar. Comentar el código PL/SQL con dos guiones(--)si el comentario es en una línea, o encerrar el comentario entre los símbolos /* y */ si el comentario tiene más líneas. Los comentarios son información estricta y no hacen cumplir condiciones o comportamiento lógico de los datos. Los comentarios bien escritos son extremadamente valiosos para legibilidad de código y mantenimiento de futuro código. </li></ul>
  • 8. <ul><li>La mayoría de las funciones disponibles en SQL también son válidas en expresiones PL/SQL </li></ul><ul><li>Funciones de número simple-fila </li></ul><ul><li>Funciones de carácter simple-fila </li></ul><ul><li>Función de conversión de tipo de datos </li></ul><ul><li>Función de fechas </li></ul><ul><li>Functiones de timestap </li></ul><ul><li>GREATEST, LEAST </li></ul><ul><li>Función de Micelanios </li></ul><ul><li>Las siguientes funciones no están disponibles en sentencias procedimentales </li></ul><ul><li>DECODE </li></ul><ul><li>Funciones de Grupo como AVG, MIN, MAX, COUNT, SUM, STDDRV, y VARIANCE, Las funciones de grupo se aplican a a grupo de filas en la tabla por lo tanto solamente son disponibles en sentencias SQL y en el bloque PL/SQL </li></ul>
  • 9. <ul><li>La mayoría de las funciones SQL pueden usarse en PL/SQL. Estas funciones ayudan a manipular datos, éstas caen dentro de las siguientes categorías: </li></ul><ul><ul><ul><li>Números </li></ul></ul></ul><ul><ul><ul><li>Caracteres </li></ul></ul></ul><ul><ul><ul><li>Conversión </li></ul></ul></ul><ul><ul><ul><li>Fechas </li></ul></ul></ul><ul><ul><ul><li>Miselanious </li></ul></ul></ul><ul><li>La función de ejemplo en la diapositiva define lo siguiente: </li></ul><ul><ul><li>Construcción de nombre de direcciones mail para una compañía </li></ul></ul><ul><ul><li>Convertir el nombre a minúsculas </li></ul></ul><ul><li>CHR es una funcion de SQL que convierte código ASCII al carácter correspondiente, 10 es el código para salto de línea </li></ul><ul><li>PL/SQL tiene su propia función de gestión de errores que son: </li></ul><ul><li>SQLCODE </li></ul><ul><li>SQLERRM (Es la función de manejo de errores y serán discutidos en el curso siguiente) </li></ul>
  • 10. <ul><li>PL / SQL intenta convertir tipos de datos dinámicamente si se mezclan en una declaración. Por ejemplo, si usted asigna a NUMBER el valor de una variable CHAR, PL/SQL trastada dinámicamente en numero dentro de una representación de carácter, y estos pueden ser almacenados en una variable CHAR. La situación contraria igual es aplicada, siempre que la expresión de carácter represente un valor numérico. </li></ul><ul><li>Si ellos son compatibles, usted puede asignar caracteres de variables de dato y viceversa. </li></ul><ul><li>A menos de expresiones, usted debería hacer tipo de datos iguales. Si ocurre que en una expresión se mezcla tipo de datos, usted deberá usar la apropiada función de conversión de datos </li></ul><ul><li>Syntax </li></ul><ul><li>TO_CHAR (value, fmt) </li></ul><ul><li>TO_DATE (value, fmt) </li></ul><ul><li>TO_NUMBER (value, fmt) </li></ul><ul><li>  </li></ul><ul><li>Donde: value es una cadena de caracteres, números o datos </li></ul><ul><li>Fmt es un formato de modelo usado para convertir valores </li></ul>
  • 11. <ul><li>v_date := ‘January 13, 2001’ </li></ul><ul><li>La conversión del ejemplo define lo siguiente: </li></ul><ul><li>Almacena la cadena de caracteres que representa una fecha en una variable declarada DATE de tipo fecha. Este código causa un error de sintaxis </li></ul>
  • 12. <ul><li>v_date := TO DATE (`January 13, 2001´, `Month DD, YYYY`) </li></ul><ul><li>Lo correcto del error de la anterior diapositiva, es convertir la cadena a fecha con la función de conversión TO_DATE. </li></ul><ul><li>PL/SQL intenta la conversión si es posible, pero esto depende de la operación que empieza a llevar a cabo. Si practica buena programación el rendimiento explicito le hará llevar a cabo la conversión de tipo de datos, porque ellos pueden afectar favorablemente a llevara cabo y permanecer constantes con el cambio de versiones de software. </li></ul>
  • 13. <ul><li>Una de las ventajas de PL/SQL en relación con SQL es la habilidad de anidar sentencias. Usted puede anidar bloques donde quiera ejecutar sentencias de asignación, así hacer sentencias de bloque anidados. Por lo tanto, usted puede romper partes de bloque ejecutables en bloques pequeños. La sección de excepción puede contener bloques anidados iguales. </li></ul><ul><li>Variables de Ámbito </li></ul><ul><li>R eferencias a un identificador para resolver según el ámbito y la visibilidad. El ámbito de un identificador es aquella región de la unidad de programa (bloque, subprograma, o paquete) desde el cual se puede referenciar el identificador. Un identificador es visible solo en la región desde que usted puede referenciar el identificador usando un nombre sin calificar. La declaración de un identificador en un bloque PL/SQL se considera local a ese bloque y global a todos los sub-bloques. Si un identificador global es re-declarado en un sub-bloque ambos identificadores permanecen al ámbito. Sin embargo, dentro del sub-bloque, solo el identificador local es visible porque usted debe usar un nombre calificado que referencie al identificador global. </li></ul><ul><li>Aunque usted no pueda declarar un identificador dos veces en el mismo bloque, usted puede declarar un mismo identificador en dos bloques diferentes. Los dos ítems representan un identificador distinto, y algunos cambios en uno no lo afecta al otro. Sin embargo, un bloque no puede referenciar identificadores declarados en otro bloque del mismo nivel porque aquellos ni son identificadores locales ni globales en el bloque. </li></ul>
  • 14. <ul><li>Bloques anidados y variables de entorno </li></ul><ul><li>El bloque anidado que se muestra en la diapositiva, en nombre de la variable y puede ser referencia de la variable de nombre x. Sin embargo, no puede referenciar la variable y fuera del ámbito de y. Si la variable y de el bloque anidado es dado el mismo nombre de la variable x en otro bloque, este valor es valido solo en la duración del bloque anidado </li></ul><ul><li>  </li></ul><ul><li>Ámbito </li></ul><ul><li>El ámbito de un identificador es la región de unidad de programa (bloque, sub-programa o paquete) desde el cual usted puede referenciar el identificador </li></ul><ul><li>Visibilidad </li></ul><ul><li>Un identificador es visible solo en la región desde la cual fue referenciado el identificador usando un nombre sin identificar. </li></ul>
  • 15. <ul><li>Un identificador es visible en el bloque que es declarado y todos los sub-bloques anidados, procedimientos y funciones. Si el bloque no encuentra el identificador declarado local, el mira arriba de la sección declarativa del bloque encerrado. El Bloque nunca mira bajo del bloque encerrado. </li></ul><ul><li>El ámbito aplica todas las declaraciones de objetos, incluyendo variables, cursores, excepciones definidas por el usuario y constantes </li></ul>
  • 16. <ul><li>Cualificar un identificador usando el prefijo de etiqueta del bloque, en el ejemplo de la diapositiva, el bloque outer tiene la etiqueta outer. En el bloque interior, la variable tiene el mismo nombre, birthdate, desde el bloque outer en el bloque interno. El prefijo de la variable es el nombre del bloque, outer.birthdate </li></ul>
  • 17. <ul><li>Cualificar un identificador usando el prefijo de etiqueta del bloque, en el ejemplo de la diapositiva, el bloque outer tiene la etiqueta outer. En el bloque interior, la variable tiene el mismo nombre, birthdate, desde el bloque outer en el bloque interno. El prefijo de la variable es el nombre del bloque, outer.birthdate </li></ul>
  • 18. <ul><li>Los mismos que en SQL: lógicos, aritméticos, concatenación, paréntesis y orden de control de operaciones, operador exponencial </li></ul><ul><li>Orden de operaciones: </li></ul><ul><li>Las operaciones dentro de una expresión se llevan a cabo en un orden determinado en función de su prioridad (prioridad). La siguiente tabla muestra el orden por defecto desde la alta prioridad hasta la baja prioridad: </li></ul>Operador Operación ** Exponencial +, - Identidad, negación *, / Multiplicación, división +, - , || Adición, substracción, concatenación =, <, >, <=, >=, <>, !=, IS NULL, LIKE, BETWEEN, IN Comparison NOT Negación lógica AND Conjunction OR inclusion
  • 19. <ul><li>Cuando trabajamos con nulos, usted puede evitar errores comunes teniendo en cuenta las siguientes normas: </li></ul><ul><li>Implicar comparaciones nulas siempre da NULL </li></ul><ul><li>Aplicando el operador lógico NOT a un null da NULL </li></ul><ul><li>En sentencias condicionales de control, si la condición da null, esta secuencia asociada de sentencias no son ejecutadas </li></ul>
  • 20. <ul><li>Hacer fácil el mantenimiento de código con: </li></ul><ul><ul><li>Documentar el código con comentarios </li></ul></ul><ul><ul><li>Desarrollar una convención de código </li></ul></ul><ul><ul><li>Desarrollar convenciones de nombres para identificar otros objetos </li></ul></ul><ul><ul><li>Mejorar la legibilidad con sangrías </li></ul></ul>
  • 21. <ul><li>Para claridad, y mejorar la legibilidad, se debe aplicar sangría a cada nivel del código, se muestra la estructura, usted puede dividir líneas con sangría usando espacios de tabulaciones. </li></ul><ul><li>Compare la sentencia if: </li></ul><ul><li>IF x>y THEN v_max:=x;ELSE v_max:=y,END IF; </li></ul><ul><li>IF x>y THEN </li></ul><ul><li>v_max:=x; </li></ul><ul><li>ELSE </li></ul><ul><li>v_max:=y, </li></ul><ul><li>END IF; </li></ul>

×