Anda di halaman 1dari 8

PRCTICA IX.

INTRODUCCIN A PL/SQL

PRCTICA IX. INTRODUCCIN A PL/SQL


Objetivo.
Al terminar esta prctica, el alumno conocer los principales componentes de un bloque
PL/SQL.
Material.
Oracle 8 para Windows95.

Bases de Datos

Pgina 1

PRCTICA IX. INTRODUCCIN A PL/SQL

1. Introduccin
PL/SQL es un lenguaje de programacin estructurado. Un bloque PL/SQL est
compuesto de tres partes principales:

seccin declarativa (opcional). Contiene las variables, constantes ...


seccin ejecutable (obligatoria). Contiene rdenes SQL para manipular datos de la
base de datos y rdenes PL/SQL para manipular los datos del bloque
seccin de excepciones (opcional). Especifica las acciones a realizar en caso de
error o cuando se producen excepciones en la ejecucin.

La estructura general es1:


DECLARE
variables, constantes, excepciones ...
BEGIN
rdenes SQL
rdenes PL/SQL
EXCEPTION
acciones a realizar
END;
/
Para ejecutar un bloque PL/SQL siempre hay que colocar al final la barra /.
Cada unidad PL/SQL puede contener uno o ms bloques que pueden estar anidados. Un
bloque PL/SQL puede ser un bloque annimo (no tiene nombre) o un subprograma
(funcin o procedimiento, con las caractersticas clsicas de estos). La estructura bsica
de un bloque annimo es la que ya se ha visto. La de un subprograma es:

PROCEDURE nombre IS
[DECLARE]
BEGIN
...
[EXCEPTION]
...
END;

FUNCTION nombre
RETURN tipo_de_dato IS
[DECLARE]
BEGIN
...
[EXCEPTION]
...
END;

Lo que est en negrita es opcional y lo que est en negrita y cursiva es obligatorio

Bases de Datos

Pgina 2

PRCTICA IX. INTRODUCCIN A PL/SQL

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

PRCTICA IX. INTRODUCCIN A PL/SQL

2.3. Atributo %TYPE


El atributo %TYPE se utiliza para declarar una variable con el mismo tipo que una
columna de una tabla o que otra variable definida anteriormente.
Sintaxis:
tabla.columna | nombre_variable %TYPE;
Ejemplo:
var_nombre empleado.nombre%TYPE;
balance NUMBER;
balance_minimo balance%TYPE := 10;
2.4. Variables BOOLEANAS
Las variable BOOLEANAS pueden tomar el valor TRUE, FALSE o NULL.
Las variables pueden combinarse mediante operadores lgicos (NOT, AND, OR).
Las expresiones pueden devolver valores BOOLEANOS utilizando operadores
relacionales (<, <=...).

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

PRCTICA IX. INTRODUCCIN A PL/SQL

3.4. Operadores
Los operadores en PL/SQL son los mismos que para SQL: Aritmticos,
Concatenacin, Parntesis. Y adems, existe el operador exponencial (**).

Lgicos,

4. ACCEPT .. PROMPT y DBMS_OUTPUT


Funciones para interactuar con el usuario.
Sintaxis
ACCEPT variable PROMPT mensaje al usuario;
DBMS_OUTPUT.PUT_LINE(Mensaje || variable);
Ejemplos:
ACCEPT nombre PROMPT Introduzca el nombre del usuario:
DBMS_OUTPUT.PUT_LINE(El nombre del usuario es : || nombre);

5. rdenes SQL en PL/SQL


5.1. SELECT
Sintaxis:
SELECT lista
INTO variable[, variable, variable...]
FROM tabla
WHERE condicin;
El SELECT almacenar los valores que obtenga en las variables indicadas tras INTO y
en el mismo orden.
Es obligatorio incluir la clusula INTO.
El SELECT debe prepararse para que slo devuelva una fila.
Ejemplo:
DECLARE
v_dep NUMER(2);
v_nombre VARCHAR2(15);
BEGIN
SELECT dep, nom
INTO v_dep, v_nombre
FROM departamento
WHERE sec=ventas;
END;

Bases de Datos

Pgina 5

PRCTICA IX. INTRODUCCIN A PL/SQL

5.2. INSERT, UPDATE, DELETE


La sintaxis no vara:
INSERT INTO tabla VALUES(...);
UPDATE tabla
SET valor = expresin
WHERE condicin;
DELETE FROM tabla WHERE condicin;

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

PRCTICA IX. INTRODUCCIN A PL/SQL

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

PRCTICA IX. INTRODUCCIN A PL/SQL

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

Anda mungkin juga menyukai