Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ÍNDICE DE CONTENIDOS
1. INTRODUCCIÓN A PL/SQL
2. FUNDAMENTOS DE PL/SQL
4. SQL EN PL/SQL
5. FUNCIONES PREDEFINIDAS
6. BIBLIOGRAFÍA
2
DASBD 2003-2004
1
Introducción a PL/SQL
I. Introducción
II. Características de PL/SQL
III. Versiones de PL/SQL y Oracle
IV. Arquitectura
3
DASBD 2003-2004
INTRODUCCION
4
DASBD 2003-2004
2
INTRODUCCION
Los 4GL (lenguajes de cuarta generación) son bastante más simples y tienen
menos órdenes que los de 3GL (como C ó Pascal).Sin embargo tienen
limitaciones en cuanto al control de la secuencia de ejecución de
instrucciones, el uso de variables, la modularidad, gestión de errores.. Por
elllo se creó PL/SQL que combina la flexibilidad de SQL con la potencia y
configurabilidad de los 3GL.
PL/SQL añade respecto a SQL:
• Variables y tipos
• Estructuras de control: bucles y sentencias IF-THEN-ELSE
• Procedimientos y funciones
• Tipos de objetos y métodos ( PL/SQL 8.0 o superior )
Las construcciones procedimentales están perfectamente integradas con
Oracle SQL , lo cual da como resultado un lenguaje potente y estructurado. El
diseño de PL/SQL se basa en el lenguaje de tercera generación Ada. Los
programas PL/SQL se pueden almacenar en la BD como cualquier otro objeto
de ésta. 5
DASBD 2003-2004
CARACTERISTICAS
Modelo cliente-servidor
La mayor parte de las aplicaciones de BBDD utilizan este modelo. En la
máquina cliente está el programa PL/SQL y envía peticiones de información a
un servidor de base de datos. Las peticiones se llevan a cabo mediante SQL.
Se enviaría una petición por la red por cada orden SQL. Para evitar esta
afluencia de tráfico se empaquetan varias órdenes SQL en un bloque PL/SQL.
6
DASBD 2003-2004
3
CARACTERISTICAS
DECLARE
/*Sección declarativa */
BEGIN
/*Sección ejecutable */
EXCEPTION
/*Sección de manejo de excepciones*/
END;
7
DASBD 2003-2004
CARACTERISTICAS
Las únicas cláusulas obligatorias son BEGIN y END.
Las variables pueden ser del mismo tipo que las columnas de la base de
datos o de tipos adicionales :
DECLARE
v_nombre VARCHAR2(15);
v_AñoComienzo DATE;
v_contador BINARY_ INTEGER; -- tipo entero
o tipos definidos por el usuario:
DECLARE
TYPE t_RegistroEstudiante IS RECORD (
apellido VARCHAR2(10),
nombre VARCHAR2(10),
creditos NUMBER(3)
);
8
DASBD 2003-2004
4
CARACTERISTICAS
PL/SQL admite tipos de objetos que tienen métodos y
atributos ( a partir de PL/SQL 8.0) :
CREATE OR REPLACE TYPE ObjetoEstudiante As
OBJECT (
ID NUMBER(5),
apellido VARCHAR2(10),
nombre VARCHAR2(10),
-- a continuación pueden ir métodos
);
9
DASBD 2003-2004
5
ARQUITECTURA
MOTOR PL/SQL
EJECUTOR
Órdenes DE
Bloque procedimentales ORDENES
Bloque PROCEDIMENTALES
PL/SQL PL/SQL
Órdenes SQL
11
DASBD 2003-2004
Fundamentos de PL/SQL
I. Inicio al lenguaje
II. Tipos de datos
III. Ambito y visibilidad de variables
IV. Estructuras de control
12
DASBD 2003-2004
6
INICIO AL LENGUAJE
13
DASBD 2003-2004
INICIO AL LENGUAJE
14
DASBD 2003-2004
7
INICIO AL LENGUAJE
15
DASBD 2003-2004
INICIO AL LENGUAJE
Ej:
DECLARE
v_num_empleados NUMBER(2);
BEGIN
INSERT INTO dep VALUES (99,’PROVISIONAL’),NULL);
UPDATE emp SET Dep_no=99 WHERE dep_no=20;
v_num_empleados:= SQL%ROWCOUNT;
DELETE FROM dep
WHERE dep_NO=20;
DBMS_OUTPUT.PUT_LINE ( v_num_empleados || Empleados
ubicados en provisional);
EXCEPTION
WHEN OTHERS THEN ROLLBACK;
RAISE_APPLICATION_ERROR (-20000, ‘ Error en la aplicación’);
END;
16
DASBD 2003-2004
8
INICIO AL LENGUAJE
Identificadores
Se utilizan para nombrar variables, procedimientos, funciones, cursores,
etiquetas...
No hay diferencia entre mayúsculas y minúsculas. Pueden tener hasta 30
caracteres empezando por una letra que puede ir seguida de letras,números y
los caracteres $,# y _.No pueden usarse palabras reservadas como DECLARE.
Podemos usar cualquier carácter imprimible y usar palabras reservadsa o
diferenciar entre mayúsculas y minúsculas usando comillas dobles , pero no es
recomendable.
Literales
Es un valor numérico,de carácter o booleano.
• De carácter. Son varios caracteres delimitados por comillas sim ples. Se pueden
asignar a los tipos Char o Varchar2. Para incluir la comilla simple hay que poner
2 comillas simples seguidas :
‘John’’s friends’.
17
DASBD 2003-2004
INICIO AL LENGUAJE
Ejemplos:
-3.4
25.0 ó 25. (son tratados como reales)
-7.12e+12
• Booleano. Tres posibles valores : TRUE, FALSE o NULL. Se asignan a
variables booleanas .
Comentarios
• Monolínea:Comenzando con dos guiones
• Multilínea: Empiezan por el delimitador /* y finalizan con el delimitador */.
18
DASBD 2003-2004
9
INICIO AL LENGUAJE
Declaración de variables
Deben declararse en la sección correspondiente antes de
ser usadas. La sintaxis es :
<nombre_de_variable> <tipo> [CONSTANT] [NOT NULL][{
:= | DEFAULT } valor]
Si no se inicializa toma el valor NULL ( signigica valor
desconocido o no definido). Si se pone la cláusula NOT
NULL es obligatorio inicializarla. Con CONSTANT estamos
declarando una constante, hay que inicializarla y su valor no
puede ser luego modificado. Da igual usar el operador := o
DEFAULT. Sólo puede haber una declaración de variable
por línea.
19
DASBD 2003-2004
INICIO AL LENGUAJE
Operadores
• Asignación : Para dar valor a una variable se usa := . Ej: edad:=23;
• Lógicos: AND, OR y NOT.
• Concatenación: Para unir dos o más cadenas de caracteres se usa el operador
||.
• Comparación : <, >, =,<=, >=, != ó <>(distinto), IS NULL, BETWEEN, LIKE, IN
etc. ( igual que en SQL)
• Aritméticos: +, -, *, /, ** (exponenciación)
Precedencia de operadores:
Prioridad Operador
1 **, NOT
2 *, /
3 +, -, ||
4 =, !=, <, <,>=, >=, IS NULL, LIKE BETWEEN, IN
5 AND
6 OR 20
DASBD 2003-2004
6
10
TIPOS DE DATOS
Tipos PL/SQL
Hay 3 categorías de tipos : escalares, compuesto y referencias. Los
escalares no tienen componentes, mientras los compuestos sí. ( los tipos se
definen en el paquete STANDARD ).
Escalares
Existen las siguientes familias en esta categoría:
• Tipo numérico
- NUMBER
Sintaxis : NUMBER (P,S).
Contiene un valor entero o real. P es la precisión ( o nº de dígitos ) y S la
escala (o nº de valores decimales). P y S son opcionales, pero si se incluye
S hay que poner la P. Hay subtipos equivalentes por cuestiones de
compatibilidad con tipos de otras bases de datos :INT, INTEGER,REAL,
DECIMAL,NUMERIC ...
21
DASBD 2003-2004
TIPOS DE DATOS
BINARY_INTEGER
Se usa para valores que se usen durante cálculos y no
se almacenan en la base de datos.
- PLS_INTEGER
Es igual que el anterior, pero te avisa del error cuando
hay un desbordamiento en el cálculo.
22
DASBD 2003-2004
11
TIPOS DE DATOS
•Tipos de carácter
- VARCHAR2
Sintaxis: VARCHAR2 (L);
L es la longitud máxima de caracteres y es obligatorio indicarlo.
- CHAR
Sintaxis : CHAR (L);
Representa cadenas de caracteres de longitud fija. Se rellena con espacios en
blanco los caracteres sobrantes, algo que hay que tener en cuenta a la hora de
comparar cadenas. Es opcional, si no se indica la longitud es un solo carácter.
- LONG
Similar al tipo VARCHAR2. A diferencia del tipo LONG en las Bases de datos
que pueden almacenar hasta 2 Gigabytes, el tipo LONG de PL/SQL almacena
hasta 32.760 Bytes.
• Tipos Raw
Almacenan datos en formato binario, evitando la conversión entre conjunto de
caracteres que realiza Oracle y otras bases de datos. Hay 2 tipos: RAW y LONG
RAW.
23
DASBD 2003-2004
TIPOS DE DATOS
24
DASBD 2003-2004
12
TIPOS DE DATOS
§Tipos de referencia
REF
Cuando se declara una variable de tipo referencia puede
apuntar a distintas posiciones de memoria de durante la
vida del programa ( son como los punteros en C ).
Tipos LOB
Se emplean para objetos de gran tamaño ( hasta 4 GB ),
tales como imágenes, vídeo, gran cantidad de texto.... Es un
valor binario o de tipo carácter.
25
DASBD 2003-2004
TIPOS DE DATOS
Atributos %TYPE y %ROWTYPE
§%TYPE declara una variable del mismo tipo que otra o que una columna de una
base de datos. Ej:
total facturas.importe%TYPE; --si importe es un NUMBER(5,2), total es del
mismo tipo
--si cambia el tipo importe, la variable total también
cambia
•%ROWTYPE crea una variable de registro cuyos campos son los de las
columnas de la tabla o vista. Ej :
moroso clientes%ROWTYPE; --Declara la variable moroso que podrá contener 1
fila de clientes
moroso.nombre; --Para acceder a una columna se le pone un punto y el nombre
del campo.
Tanto en uno como en otro se hereda el tipo y la longitud pero no los posibles
atributos NOT NULL, ni valores por defecto.
26
DASBD 2003-2004
13
TIPOS DE DATOS
27
DASBD 2003-2004
TIPOS DE DATOS
Conversiones
Para los tipos de una familia dada se pueden hacer conversiones sin niguna
restricción, salvo si se pretende convertir un tipo que ocupa más memoria a otro
de menos memoria.
Funciones de conversión de tipos de PL/SQL y SQL:
TO_CHAR(): Convierte su argumento en tipo VARCHAR2. El argumento puede
ser de tipo numérico o fecha.
TO_DATE(): Convierte a tipo DATE un tipo carácter.
TO_NUMBER(): a NUMBER un tipo carácter.
Utilizando estas funciones se realizan conversiones de tipo explícito ( es
recomendable ). Pero también se pueden hacer conversiones implícitas en las
que PL/SQL convierte de forma automática entre tipos de distintas familias. Ej:
28
DASBD 2003-2004
14
TIPOS DE DATOS
DECLARE
v_creditos VARCHAR2(5);
BEGIN
SELECT creditos INTO v_creditos FROM estudiante
WHERE id=100;
END;
La columna creditos es un tipo NUMBER(3). PL/SQL
convierte el dato numérico a una cadena de caracteres. Se
pueden realizar conversiones implíctas entre: caracteres y
numeros, caracteres y fechas
29
DASBD 2003-2004
AMBITO DE VARIABLES
Ambito y visibilidad de las variables
La variable será local para el bloque en el que se ha declarado y global para
los hijos de éste.
Sin un identificador local coincide con uno global, se usan etiquetas para
distinguirlos.
<<padre>>
DECLARE - - - - - - - - - - - - - - - - - Bloque PADRE
v1 CHAR;
BEGIN
...
DECLARE - - - - - - - - - - - - Bloque HIJO
v1 CHAR;
v2 NUMBER;
BEGIN
...
v1:= padre.v1; - - - - - - - - - - - - el primero es el identificador local
...
END;
v2:=v1; - - - - - - - -error : v2 desconocida
30
END;
DASBD 2003-2004
15
ESTRUCTURAS DE CONTROL PL/SQL
IF-THEN-ELSE
IF expresión_booleana THEN
secuencia de órdenes1;
[ELSIF
secuencia de órdenes2; ]
[ELSE
secuencia de órdenes3; ]
END IF;
BUCLES
Bucle simple
LOOP
EXIT [WHEN condición; ]
END LOOP;
El bucle se ejecuta mientras condición se evalue a verdadero ( si no, es bucle
infinito )
Bucles While
WHILE condición LOOP
secuencia de órdenes;
END LOOP;
31
DASBD 2003-2004
16
REGISTROS Y TABLAS EN PL/SQL
I. Introducción a registros
II. Declaración de registros
III. Ejemplos
IV. Introducción a tablas
V. Definición y declaración
VI. Uso de variables
VII. Atributos
33
DASBD 2003-2004
REGISTROS EN PL/SQL
34
DASBD 2003-2004
17
REGISTROS EN PL/SQL
35
DASBD 2003-2004
DECLARACIÓN DE REGISTROS
18
EJEMPLO USO DE REGISTROS
DNI NUMBER(5),
Nombre VARCHAR(10),
Apellido VARCHAR(10),
-Al igual que con %TYPE no se incluyen las restricciones NOT NULL
definidas en las columnas.
-Si cambia la definición de la tabla, %ROWTYPE también lo hace 38
DASBD 2003-2004
19
INTRODUCCIÓN A TABLAS PL/SQL
39
DASBD 2003-2004
40
DASBD 2003-2004
20
DEFINICIÓN Y DECLARACIÓN
USO DE VARIABLES
21
ATRIBUTOS DE LAS TABLAS
43
DASBD 2003-2004
44
DASBD 2003-2004
22
ATRIBUTOS DE TABLAS
45
DASBD 2003-2004
SQL en PL/SQL
I. Introducción
II. Órdenes DML en PL/SQL
III. Sintaxis órdenes SQL
46
DASBD 2003-2004
23
INTRODUCCION
INTRODUCCIÓN
5.Las órdenes de control del sistema cambian las opciones que afectan a
la base de datos completa , por ejemplo para activar o desactivar el
archivado definitivo. ALTER SYSTEM
n Las únicas órdenes SQL permitidas en un programa PL/SQL son las del
DML y las de control de transacciones. En particular las DDL son ilegales y
.EXPLAIN PLAN también aunque pertenezcan a DML ya que PL/SQL usa
un acoplamiento temprano (es decir determinación de la zona de
almacenamiento en tiempo de compilación .y las órdenes DDL modifica
los objetos de la base de datos, los permisos , etc. en tiempo de ejecución.
48
DASBD 2003-2004
24
DML EN PL/SQL
n Todos los valores empleados para cambiar los contenidos de clases son
fijos: son valores que ya se conocen en el momento de escribir la orden
.PL/SQL elimina esta restricción mediante el uso de las variables, que se
pueden usar allí donde este permitido usar una expresión. dentro de la
orden SQL. Cuando se las utiliza de esta manera ,se las conoce como
variables de acoplamiento. Por ejemplo en el siguiente ejemplo podemos
reemplazar el valor fijo del número de créditos con una variable de
acoplamiento.
49
DASBD 2003-2004
DML EN PL/SQL
50
DASBD 2003-2004
25
SINTAXIS ÓRDENES SQL
n La clausula WHERE
Las órdenes SELECT,UPDATE y DELETE incluyen la cláusula
WHERE como parte integral de sus operaciones.Esta cláusula
define las órdenes que forman el conjunto activo,es decir, el
conjunto de filas devuelto por una consulta(SELECT)o solbre las
que actúa una orden UPDATE o DELETE.
La cláusula WHERE está compuestas de condiciones ,unidas
mediante los operadores booleanos AND,OR o NOT . Las
condiciones suelen adoptar la forma de comparaciones .
52
DASBD 2003-2004
26
Funciones predefinidas
I. Funciones de cadena
II. Funciones de cadena que devuelven valores
numéricos
III. Funciones numéricas
IV. Funciones de fecha
V. Funciones de conversión
VI. Funciones de grupo
VII. Otras funciones
53
DASBD 2003-2004
FUNCIONES DE CADENA
27
FUNCIONES DE CADENA
FUNCIONES DE CADENA
28
FUNCIONES DE CADENA QUE DEVUELVEN
VALORES NUMERICOS
FUNCIONES NUMÉRICAS
58
DASBD 2003-2004
29
FUNCIONES NUMÉRICAS
59
DASBD 2003-2004
FUNCIONES DE FECHA
60
DASBD 2003-2004
30
FUNCIONES DE CONVERSIÓN
61
DASBD 2003-2004
FUNCIONES DE CONVERSION
62
DASBD 2003-2004
31
FUNCIONES DE GRUPO
63
DASBD 2003-2004
FUNCIONES DE GRUPO
64
DASBD 2003-2004
32
OTRAS FUNCIONES
65
DASBD 2003-2004
OTRAS FUNCIONES
66
DASBD 2003-2004
33
BIBLIOGRAFÍA
67
DASBD 2003-2004
34