Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Santiago Faci
santi@rastafurbi.org
6 de Enero de 2004
Contents
1 Introducción al lenguaje PL/SQL 2
3 Tipos de datos 2
4 Identificadores 2
5 Variables y constantes 2
5.1 Declaración de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5.2 Declaración de constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
6 Operadores 3
7 Funciones 3
8 Estructuras de control 3
9 Procedimientos y Funciones 5
9.1 Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
9.2 Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
11 Cursores 6
1
1 INTRODUCCIÓN AL LENGUAJE PL/SQL 2
Donde:
3 Tipos de datos
El lenguaje PL/SQL dispone de todos los tipos de datos de SQL y además incorpora alguno propio como
el BOOLEAN que almacena valores TRUE, FALSE ó NULL.
4 Identificadores
Los identificadores, como en todo lenguaje de programación, se utilizan para nombrar a los objetos que
se emplean en un programa: variables, constantes, nombres de procedimientos y funciones, etc . . . En
PL/SQL se permiten identificadores de hasta 30 caracteres, empezando siempre por una letra, seguida de
más letras, números, signo de dolar, almohadilla o guión bajo.
5 Variables y constantes
5.1 Declaración de variables
Todas las variables deben declararse antes de poder ser usadas en la sección correspondiente. El formato
para su declaración es el siguiente:
Ejemplo:
DECLARE
nombre CHAR(20) NOT NULL;
valor NUMBER(2) := 0;
fecha DATE;
En este caso siempre se deberá asignar un valor en la declaración, puesto que se trata de una con-
stante, tal y como ocurre con los lenguajes de tercera generación.
Ejemplo:
6 Operadores
Al igual que cualquier otro lenguaje, PL/SQL dispone de los operadores más comunes.
num := 10;
• Operadores de comparación =, !=, <, >, <=, >=, IS NULL, BETWEEN, LIKE,
IN, . . . tal y como se utilizaban en el lenguaje SQL.
• Operadores aritméticos +, -. *. /
7 Funciones
Con el lenguaje PL/SQL podremos hacer uso de todas las funciones que veiamos en SQL aunque las
funciones de grupo como COUNT ó SUM sólo pueden ser usadas dentro de sentencias SELECT.
8 Estructuras de control
PL/SQL dispone de algunas estructuras de control que permiten controlar el flujo del programa tal y
como se hace en los lenguajes de tercera generación.
8 ESTRUCTURAS DE CONTROL 4
IF
IF <condición1> THEN
<instrucciones1>
[ { ELSIF <condición2> THEN
<instrucciones2> } ]
[ ELSE
<instrucciones3> ]
END IF;
LOOP
LOOP
<instrucciones>
( IF <condición> THEN
EXIT
END IF; )
|
(EXIT WHEN <condición> )
<instrucciones>
END LOOP
WHILE
WHILE <condición> LOOP
<instrucciones>
END LOOP;
FOR
FOR <variable_control> IN [ REVERSE ] <valor_inicial>..<valor_final> LOOP
<instrucciones>
END LOOP
GOTO etiqueta
Podemos emplear también la sentencia GOTO seguida de la etiqueta a la que deberá saltar el flujo del pro-
grama. Dicha etiqueta deberá haber sido ’marcada’ previamente en algún punto del programa siguiendo
este formato:
. . .
<<borra_filas>>
DELETE FROM . . .
. . .
Ası́, la etiqueta GOTO que quiera hacer saltar el flujo del programa a la etiqueta anterior, tendrá esta
forma:
9 PROCEDIMIENTOS Y FUNCIONES 5
. . .
GOTO borra_filas
. . .
Para un correcto uso de esta sentencia, habrá que respetar una serie de normas:
• La etiqueta no puede estar dentro de un IF, un LOOP o sub-bloque internos al bloque desde donde
se quiere hacer el salto.
9 Procedimientos y Funciones
En el lenguaje PL/SQL nos encontramos también con el concepto de subprograma: procedimientos y
funciones al igual que en los lenguajes procedimentales de tercera generación. En este caso, podemos
guardarlos en la base de datos y ejecutarlos desde otros subprogramas.
9.1 Procedimientos
Siguen este formato:
PROCEDURE <nombre_procedimiento>
[ ’(’ <lista_de_parámetros> ’)’ ]
IS
<declaraciones>
BEGIN
<instrucciones>
EXCEPTION
<excepciones>
END [ <nombre_procedimiento> ]
Ejemplo:
9.2 Funciones
La declaración de funciones sigue el siguiente formato:
FUNCTION <nombre_función>
[ ’(’ <lista_de_parámetros> ’)’ ]
RETURN <tipo_de_valor_devuelto>
IS
<declaraciones>
BEGIN
10 INTERACCIÓN CON EL USUARIO 6
<instrucciones>
RETURN <expresión>
EXCEPTION
<excepciones>
END <nombre_función>
Al igual que se hace con la creación de procedimientos, para crear una función, lo haremos de la
siguiente forma:
DBMS_OUTPUT.PUT_LINE(<expresión>)
. . .
SELECT nombre INTO v_nombre
FROM ALUMNOS
WHERE nexp= ’&v_nexp’
. . .
11 Cursores
Los cursores sirven para guardar el resultado de cualquier consulta que hagamos desde algún programa
escrito en lenguaje PL/SQL. Emplearemos el siguiente formato para realizar la consulta si utilizamos
cursores:
Las variables que van justo después de la cláusula INTO recibirán el valor de la consulta, por lo tanto
deberán haber correspondencia de tipos entre ellas y el resultado que vayan a almacenar.
DECLARE
v_nombre VARCHAR(10);
v_curso NUMBER;
BEGIN
SELECT nombre, curso INTO v_nombre, v_curso
FROM ALUMNOS WHERE nexp = ’10003’;
DBMS_OUTPUT.PUT_LINE(v_nombre||’->’||v_curso);
END;