1. 1. Declaración de variables
El lenguaje PL/SQL
1
Objetivos
• Reconocer un bloque básico de PL/SQL y sus
respectivas secciones
• Describir el significado de las variables en
PL/SQL
• Declarar variables PL/SQL
• Ejecutar un bloque PL/SQL
2
1
2. Estructura de un bloque en PL/SQL
DECLARE - Opcional
Variables, cursores, excepciones def. por el usuario
BEGIN - Obligatorio
- Instrucciones SQL
- Instrucciones PL/SQL
EXCEPTION - Opcional
- Acciones a realizar cuando ocurre un error
END; - Obligatorio
PL/SQL es un lenguaje estructurado en bloques (los programas se dividen en bloques lógicos).
Un bloque consiste en tres secciones: declarativa, ejecutable y manejo de errores
3
Ejecución de instrucciones y bloques PL/SQL
• Hay que colocar un punto y coma (;) al fina de cada instrucción SQL y cada instrucción de
control PL/SQL.
• Las palabras clave de cada sección (DECLARE, BEGIN, EXCEPTION) no van seguidas
de punto y coma.
• END y el resto de instrucciones PL/SQL van seguidas de punto y coma.
4
2
3. Tipos de bloques
• Un programa PL/SQL comprende uno o más bloques. Estos bloques pueden estar
completamente separados o anidados uno dentro del otro.
• Los bloques anónimos no tienen nombre. Los subprogramas son bloques con nombre,
anó
que pueden aceptar parámetros y ser invocados. Se pueden declarar como procedimientos
(para ejecutar una acción) o como funciones (para obtener un valor)
• Los subprogramas se pueden almacenar a nivel de servidor o a nivel de aplicación
5
Uso de variables
Las variables se pueden emplear para:
• Almacenamiento temporal de datos
• Manipulación de valores almacenados
• Reutilización
• Mantenibilidad
Cuando se utilizan los atributos %TYPE y %ROWTYPE, la declaración de variables se base
en las definiciones de las columnas de la base de datos. Si la definición subyacente cambia,
entonces la declaración de la variable cambia consecuentemente en tiempo de ejecución.
6
3
4. Manejo de variables en PL/SQL
• En la sección declarativa se declaran e inicializan las variables.
• Se pueden asignar nuevos valores a las variables en la sección de ejecución
• Se pueden introducir valores dentro de un bloque PL/SQL a través de parámetros
pará
• Se pueden observar resultados a través de las variables de salida
Las declaraciones pueden asignar un valor inicial e imponer la restricción NOT NULL sobre
la variable.
Se pueden pasar valores dentro de un bloque anónimo mediante el uso de variables de
sustitución
sustitució
7
Tipos de variables
• Variables PL/SQL
Escalar (un valor simple) – Ej.: VARCHAR2, NUMBER, BOOLEAN, DATE...
Compuesto (registros)
Referencia (punteros)
LOB (Objetos grandes) – Ej. imágenes gráficas, etc.
• Variables que no pertenencen a PL/SQL
Variables de sustitución
Variables host (“Bind variables”)
Las variables de sustitución se pueden utilizar para pasar valores dentro de un bloque en
sustitució
tiempo de ejecución. Van precedidas con el símbolo &. Sólo un valor remplazará la variable
de sustitución.
Las variables host se pueden utilizar para pasar valores, en tiempo de ejecución, desde el
bloque PL/SQL al entorno de ejecución
8
4
5. Declaración de variables PL/SQL
Sintaxis:
Ejemplos:
• Las constantes deben ser inicializadas.
• Las variables NOT NULL deben ser inicializadas
9
Instrucciones para la declaración de variables PL/SQL
• Seguir convenciones de nombres (v_name, c_name)
• Las variables NOT NULL y las constantes deben ser inicializadas
• Declarar un identificador por línea
• Inicializar los identificadores mediante el operador de asignación (:= o la palabra
:=)
reservada DEFAULT
Si no se asigna un valor inicial, la nueva variable contiene NULL por defecto hasta que se
le asigna un valor posteriormente. Es una buena práctica de programación inicializar
prá programació
todas las variables.
El código que utiliza el mismo nombre para una variable y para el nombre de una
columna de un tabla es difícil de leer y mantener.
Los nombres de las variables no deben contener más de 30 caracteres y deben empezar
siempre por una letra.
letra
10
5
6. Inicialización de variables y palabras clave
La palabra clave DEFAULT se utiliza para variables que tienen un valor típico
v_mgr NUMBER(6) DEFAULT 100;
La restricción NOT NULL debe continuarse con la cláusula de inicialización:
v_city VARCHAR2(30) NOT NULL := ‘Oxford’;
Los literales de cadena de caracteres deben encerrarse entre comillas simples:
‘Hello, world’
Si tenemos la cadena FISHERMAN’S DRIVE, entonces se codifica como:
‘FISHERMAN’’S DRIVE’
11
Tipos de datos escalares básicos
•CHAR [(longitud máxima)] (Hasta 32767 bytes, por defecto 1)
•VARCHAR2 (longitud máxima) (Hasta 32767 bytes)
•LONG (cadenas de caracteres de longitud variable, hasta 32767 bytes)
•LONG RAW (datos binarios, hasta 32767 bytes)
•NUMBER [(precisión, escala)] (prec. 1 a 38, escala -84 a 127)
•BINARY_INTEGER (enteros entre -2,147,483,647 y 2,147,483,647)
•PLS_INTEGER (igual que el anterior, más eficiente)
•BOOLEAN (TRUE, FALSE, NULL)
12
6
7. Declaración de variables escalares
Ejemplos
13
El atributo %TYPE
• Permite declarar una variable de acuerdo con:
• La definición de una columna de la base de datos
• Otra variable declarada previamente
Sintaxis
Ejemplos
La restricción NOT NULL de una columna de la base de datos no se aplica de manera
automática a la variable declarada usando %TYPE
14
7
8. Variables de entorno
• Las variables de entorno se pueden utilizar para pasar valores en tiempo de
ejecución (números o caracteres) dentro de un programa PL/SQL. (No funcionan
en procedimientos, funciones y paquetes)
PRINT no puede ser utilizado dentro de un bloque PL/SQL
Para referenciar una variable de entorno dentro de un bloque PL/SQL se le
anteponen dos puntos (:)
15
DBMS_OUTPUT.PUT_LINE
• Es un procedimiento de un paquete suministrado por Oracle
• Es una alternativa para presentar datos desde un bloque PL/SQL
• Debe ser previamente activado en SQL Plus mediante la instrucción:
SET SERVEROUTPUT ON
16
8
9. EJERCICIOS
1. Evaluar cada una de las siguientes declaraciones. Determinar cuál de ellas son
correctas y explicar el porqué:
17
EJERCICIOS
2. En cada una de las siguientes asignaciones, indicar si la declaración es válida y
cuál sería el tipo de datos válido para el resultado:
18
9
10. EJERCICIOS
3. Crear un bloque anónimo que imprima en pantalla la frase “Mi bloque PL/SQL
funciona”
19
10