Beruflich Dokumente
Kultur Dokumente
INTRODUCCIN A PL/SQL
Bases de Datos
Pgina 1
1. Introduccin
PL/SQL es un lenguaje de programacin estructurado. Un bloque PL/SQL est
compuesto de tres partes principales:
PROCEDURE nombre IS
[DECLARE]
BEGIN
...
[EXCEPTION]
...
END;
FUNCTION nombre
RETURN tipo_de_dato IS
[DECLARE]
BEGIN
...
[EXCEPTION]
...
END;
Bases de Datos
Pgina 2
2. Variables
Las variables se definen en la seccin declarativa de los bloques PL/SQL dnde tambin
pueden inicializarse.
La asignacin de nuevos valores a las variables puede hacerse en la parte ejecutable del
bloque.
Pueden utilizarse para pasar valores como argumentos a subprogramas. Estas podrn ser
de tipo IN (variable de entrada, OUT, variable de salida o INOUT, variable de
entrada/salida).
Tambin podrn utilizarse para almacenar valores devueltos o requeridos por una orden
SQL .
Todas las variables tienen un tipo. Los posibles tipos de una variable son:
Escalar. Almacenan un valor nico. Son los mismos 5 Tar /TopC10A 2 p`PP>40P2F`P@e ` c-al. 5 030 5
Bases de Datos
Pgina 3
3. rdenes ejecutables
3.1. Comentarios en PL/SQL
Pueden aadirse comentarios al cdigo. Estos comentarios pueden ser especificados
con:
/*comentario
ms comentario */
-- comentario de lnea
3.2. Funciones PL/SQL
Las funciones utilizables en SQL (LOWER, UPPER, INITCAP, CANCAT, SUBSTR,
LENGTH, ROUND, TRUNC, MOD, MONTHS_BETWEEN, ADD_MONTHS,
NEXT_DAY, LAST_DAY) excepto las de agrupamiento (ya que estas se aplican sobre
una columna de una tabla).
3.3. Conversin de tipos
Existen funciones de conversin de tipos: TO_CHAR, TO_DATE, TO_NUMBER
Sintaxis:
TO_CHAR (valor, formato)
TO_DATE(valor, formato)
TO_NUMBER(valor, formato)
Bases de Datos
Pgina 4
3.4. Operadores
Los operadores en PL/SQL son los mismos que para SQL: Aritmticos,
Concatenacin, Parntesis. Y adems, existe el operador exponencial (**).
Lgicos,
Bases de Datos
Pgina 5
6. Estructuras de control
6.1. rden IF
Sintaxis:
IF- THEN-END IF;
IF-THEN-ELSE-END IF;
IF-THEN-ELSIF-END IF;
6.2. rden LOOP
Sintaxis:
LOOP
[EXIT WHEN condicin]
END LOOP;
6.3. rden FOR
Sintaxis:
FOR contador IN min..max LOOP
...
END LOOP;
6.4. rden WHILE
Sintaxis:
WHILE condicion LOOP
...
END LOOP;
Bases de Datos
Pgina 6
ANEXO
ATENCIN: La instruccin ACCEPT no puede ser utilizada dentro de un bloque PL/SQL, por
ejemplo el siguiente cdigo no funcionar:
SET ServerOutput ON;
SET VERIFY OFF;
DECLARE
v NUMBER;
BEGIN
ACCEPT v prompt 'Introduzca un valor para v ';
DBMS_OUTPUT.PUT_LINE('Valor de v: '||v);
END;
/
Por lo tanto se proponen 2 soluciones para la entrada de datos por parte del usuario:
1.
Utilizar la instruccin ACCEPT fuera del bloque PL/SQL y luego hacer referencia a su valor
desde dentro del bloque, para ello utilizaremos el carcter & en la inicializacin de la variable
del bloque PL/SQL:
SET ServerOutput ON;
SET VERIFY OFF;
ACCEPT v prompt 'Introduzca un valor para v ';
DECLARE
vv NUMBER :=&v;
BEGIN
DBMS_OUTPUT.PUT_LINE('Valor de v: '||vv);
END;
/
2.
Utilizar una variable de substitucin, dentro del cdigo fuente del bloque PL/SQL, si esta
variable no est inicializada, se le pedir el valor al usuario:
SET ServerOutput ON;
SET VERIFY OFF;
DECLARE
vv NUMBER :=&v;
BEGIN
DBMS_OUTPUT.PUT_LINE('Valor de v: '||vv);
END;
/
Bases de Datos
Pgina 7
EJERCICIOS
LA DOCUMENTACIN A ENTREGAR SER EL CDIGO DISEADO
JUNTO CON LA SALIDA OBTENIDA.
EN CADA EJECICIO ELEGIR EL TIPO DE LAS VARIABLES DE LA FORMA
MS ADECUADA
1. Escribir un bloque PL/SQL que calcule la media de dos nmeros dados por el
usuario.
2. Escribir un bloque PL/SQL que pida dos identificadores de profesores y determine
cual de los dos est ms cerca de cero o si son iguales
3. Escribir un bloque PL/SQL que convierta una determinada cantidad expresada en
segundos a horas, minutos y segundos.
4. Mostrar el contenido de una variable que contenga la capacidad total de todas las
aulas del edificio de Informtica (EUI)
5. Insertar una fila en la tabla local con la capacidad total de los espacios de magisterio
(EGB) (poner como nombre de edificio TOT, inventarse el contenido del resto
de las columnas). Obtener la capacidad mxima de entre todas las clases del
edificio de Informtica (EUI). Restar, de la capacidad de la fila insertada, el ltimo
valor obtenido actualizar la fila correspondiente en la tabla. Eliminar las filas del
edificio TOT.
6. Mostrar, ordenados por el cdigo, el nombre de todos los profesores, utilizando un
bucle.
Bases de Datos
Pgina 8