PL/SQL
Enviado por jusayu • 4 de Noviembre de 2014 • Examen • 5.242 Palabras (21 Páginas) • 349 Visitas
PL/SQL
amplia SQL con los elementos caracteristicos de los lenguajes de programación, variables, sentencias de control de flujo, bucles ...
Cuando se desea realizar una aplicación completa para el manejo de una base de datos relacional, resulta necesario utilizar alguna herramienta que soporte la capacidad de consulta del SQL y la versatilidad de los lenguajes de programación tradicionales. PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones.
Asignación de variables
Una variable no es más que un nombre dado a un área de almacenamiento que nuestros programas pueden manipular. Cada variable en PL / SQL tiene un tipo de datos específico, el cual determina el tamaño y el diseño de la memoria de la variable, el intervalo de valores que se pueden almacenar dentro de la memoria y que el conjunto de operaciones que se pueden aplicar a la variable.
El nombre de una variable PL / SQL consiste en una letra seguida opcionalmente por más letras, números, signos de dólar, subrayados, y los signos numéricos y no debe exceder los 30 caracteres.De forma predeterminada, los nombres de variables no distinguen entre mayúsculas y minúsculas.No puede utilizar palabras clave reservadas a PL / SQL como un nombre de variable.
Las variables PL / SQL se deben declarar en la sección de declaración o en un paquete como una variable global. Cuando se declara una variable, PL / SQL asigna memoria para el valor de la variable y el lugar de almacenamiento se identifica por el nombre de la variable.
La sintaxis para declarar una variable es:
variable_name [ CONSTANT ] tipo de datos [ NO NULL ] [: = | DEFAULT initial_value ]
Cuando, variable_name es un identificador válido en PL / SQL, tipo de datos debe ser un tipo válido de datos PL / SQL o cualquier tipo de datos definido por el usuario que ya hemos discutido en el capítulo anterior. Algunas declaraciones de variables válidos junto con su definición se muestran a continuación:
ventas de número ( 10 , 2 );
pi CONSTANTE doble precisión : = 3,1415 ;
nombre varchar2 ( 25 ),
dirección varchar2 ( 100 );
Al proporcionar un tamaño, escala o límite de precisión del tipo de datos, se le llama declaración restringida . Declaraciones restringida requieren menos memoria que las declaraciones sin restricciones, por ejemplo:
ventas de número ( 10 , 2 ),
nombre varchar2 ( 25 ),
dirección varchar2 ( 100 );
Inicialización de variables en PL / SQL
Cuando se declara una variable, PL / SQL asigna un valor predeterminado de NULL. Si desea inicializar una variable con un valor que no sea el valor NULL, puede hacerlo durante la declaración, utilizando cualquiera de los siguientes:
• El DEFAULT palabra clave
• La asignación de operador
Por ejemplo:
counter binary_integer : = 0 ;
saludos varchar2 ( 20 ) DEFAULT 'tuvo un buen día' ;
También puede especificar que una variable no debe tener un NULL valor con el NOT NULL restricción.Si utiliza la restricción NOT NULL, debe asignar explícitamente un valor inicial para la variable.
Es una buena práctica de programación inicializar las variables adecuadamente de otro modo, en algún programa sería producir resultado inesperado. Probar siguiente ejemplo que hace uso de varios tipos de variables:
Bloques PL/SQL
Un programa de PL/SQL está compuesto por bloques. Un programa está compuesto como mínimo de un bloque.
Los bloques de PL/SQL pueden ser de los siguientes tipos:
• Bloques anónimos
• Subprogramas
Estructura de un Bloque
Los bloques PL/SQL presentan una estructura específica compuesta de tres partes bien diferenciadas:
• La sección declarativa en donde se declaran todas las constantes y variables que se van a utilizar en la ejecución del bloque.
• La sección de ejecución que incluye las instrucciones a ejecutar en el bloque PL/SQL.
• La sección de excepciones en donde se definen los manejadores de errores que soportará el bloque PL/SQL.
Cada una de las partes anteriores se delimita por una palabra reservada, de modo que un bloque PL/SQL se puede representar como sigue:
[ declare | is | as ]
/*Parte declarativa*/
begin
/*Parte de ejecucion*/
[ exception ]
/*Parte de excepciones*/
end;
De las anteriores partes, únicamente la sección de ejecución es obligatoria, que quedaría delimitada entre las cláusulas BEGIN y END. Veamos un ejemplo de bloque PL/SQL muy genérico. Se trata de un bloque anónimos, es decir no lo identifica ningún nombre. Los bloques anónimos identifican su parte declarativa con la palabra reservada DECLARE.
DECLARE
/*Parte declarativa*/
nombre_variable DATE;
BEGIN
/*Parte de ejecucion
* Este código asigna el valor de la columna "nombre_columna"
* a la variable identificada por "nombre_variable"
*/
SELECT SYSDATE
INTO nombre_variable
FROM DUAL;
EXCEPTION
/*Parte de excepciones*/
WHEN OTHERS THEN
dbms_output.put_line('Se ha producido un error');
END;
A continuación vamos a ver cada una de estas secciones
Sección de Declaración de Variables
En esta parte se declaran las variables que va a necesitar nuestro programa. Una variable se declara asignandole un nombre o "identificador" seguido del tipo de valor que puede contener. También se declaran cursores, de gran utilidad para la consulta de datos, y excepciones definidas por el usuario. También podemos especificar si se trata de una constante, si puede contener valor nulo y asignar un valor inicial.
La sintaxis generica para la declaracion de constantes y variables es:
nombre_variable [CONSTANT] <tipo_dato> [NOT NULL][:=valor_inicial]
donde:
• tipo_dato: es el tipo de dato que va a poder almacenar la variable, este puede ser cualquiera de los tipos soportandos por ORACLE, es decir NUMBER , DATE , CHAR , VARCHAR, VARCHAR2, BOOLEAN ... Además para algunos tipos de datos (NUMBER y VARCHAR) podemos especificar la longitud.
• La cláusula CONSTANT indica la definición de una constante cuyo valor no puede ser modificado. Se debe incluir la inicialización de la constante en su declaración.
• La cláusula NOT NULL impide que a una variable se le asigne el valor nulo, y por tanto debe inicializarse a un valor diferente
...