0% encontró este documento útil (0 votos)
19 vistas7 páginas

INTRODUCCION A PL - SQL

El documento introduce PL/SQL como un lenguaje de programación sofisticado para acceder a bases de datos Oracle. PL/SQL combina el poder de manipulación de datos de SQL con las estructuras de programación de lenguajes procedimentales como variables, tipos de datos, estructuras de control y procedimientos. El documento explica cómo declarar variables y constantes, usar bloques condicionales como IF y ciclos como FOR y WHILE, e implementar instrucciones SQL como SELECT e INSERT dentro de bloques PL/SQL.

Cargado por

claudettecastro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas7 páginas

INTRODUCCION A PL - SQL

El documento introduce PL/SQL como un lenguaje de programación sofisticado para acceder a bases de datos Oracle. PL/SQL combina el poder de manipulación de datos de SQL con las estructuras de programación de lenguajes procedimentales como variables, tipos de datos, estructuras de control y procedimientos. El documento explica cómo declarar variables y constantes, usar bloques condicionales como IF y ciclos como FOR y WHILE, e implementar instrucciones SQL como SELECT e INSERT dentro de bloques PL/SQL.

Cargado por

claudettecastro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

INTRODUCCION A PL/SQL

PL/SQL es un sofisticado lenguaje de programación que se utiliza para acceder a


bases de datos Oracle desde distintos entornos. PL/SQL está integrado con el servidor de
base de datos, de modo que el código PL/SQL puede ser procesado de forma rápida y
eficiente. Con éste no solo podemos insertar, modificar, eliminar y consultar datos de
ORACLE, sino también este nos permite usar procedimientos y sentencias para procesar
la información. Combina el poder de manipulación de datos de SQL con el poder de
procesamiento de un lenguaje procedimental.

PL/SQL significa Procedural Languaje/SQL (Lenguaje Procedimental/SQL).


Como su propio nombre indica, PL/SQL amplía la funcionalidad de SQL añadiendo
estructuras de las que pueden encontrarse en otros lenguajes procedimentales, como:

• Variables y tipos (tanto predefinidos como definidos por el usuario).


• Estructuras de control, como bucles(ciclos) y órdenes IF-THEN-ELSE.
• Procedimientos y Funciones.
• Tipos de objetos y métodos (en PL/SQL versión 8 o superior).

La programación de PL/SQL se realiza en rutinas de código llamadas bloques. La


estructura de un bloque PL/SQL es la siguiente:

DECLARE : Sección donde se realizan las declaraciones de variables...

BEGIN : Donde se realiza la programación del bloque.

EXCEPTION : Cuando hay que ejecutar alguna excepción.

END; : Para finalizar el bloque.

Declaración de Variables y Constantes


PL/SQL soporta declaración de variables y declaración de Constantes.
Sintaxis Constante:
Identificador [CONSTANT] tipo_de_dato [NOT NULL] [:=espr_plsql]
Ej:

DECLARE
Segundos_por_dia CONSTANT NUMBER := 60*60*24;
Begin
----
End;

Curso Programación RAD Julio César Hdez, MTE


Basado en ORACLE
Sintaxis Variable:
Identificador tipo_de_dato [:=espr_plsql]
Ej:

DECLARE
Total number(10) := 0;
Begin
----
End;

Notas:
- Las reglas para los identificadores son las mismas que para los objetos de SQL.
- NOT NULL puede ser usado para validar una variable de manera tal que no pueda
contener valores nulos. Las Variables declaradas con NOT NULL deben ser
inicializadas.
- Solamente un identificador por línea es permitido.
- No permite manejo de arreglos.
- Puede declararse una variable como una columna o como otra variable ya
previamente declarada. Con %TYPE.
- Puede declararse un record como una tabla o como otra variable ya previamente
declarado. Con %ROWTYPE.

Ej.
DECLARE
Libros_impresos number(6);
Libros_vendidos libros_impresos%TYPE;
Escritor EMPLEADO.NOMEMP%TYPE;

Dept_record deptno%ROWTYPE;

VARIABLES GLOBALES

Son utilizadas en todo el programa y son declaradas e inmediatamente inicializadas de la


siguiente forma:

:global.[nombre_variable] := [valor];

Ej: :global.nombre := null; en donde “:=” es la asignación de valor

Curso Programación RAD Julio César Hdez, MTE


Basado en ORACLE
BLOQUES DE CONDICIONES

La sintaxis de los bloques de condiciones es:

IF .... THEN
...........
...........

ELSE
...........
...........
END IF;

Ej:

-- Condiciona si el tipo de periodo no es “R” Regular--


IF not (:acsecc_grup.tipo_periodo in ('R')) then
message('V121 - TIPO DE PERÍODO NO VÁLIDO' ); -- mensaje –
message('V121 - TIPO DE PERÍODO NO VÁLIDO' ); -- mensaje –
raise form_trigger_failure; -- LEVANTA EL TRIGGER (EVENTO) --
ELSE
NEXT_ITEM; -- Se mueve al proximo item –

END IF;

ANIDADOS
IF .... THEN
...........
...........

ELSE IF …THEN
...........
...........
END IF;
END IF;

Ej:
-- Condiciona si el tipo de periodo no es “R” Regular--
IF not (:acsecc_grup.tipo_periodo in ('R')) then
message('V121 - TIPO DE PERÍODO NO VÁLIDO' ); -- mensaje –
message('V121 - TIPO DE PERÍODO NO VÁLIDO' ); -- mensaje –
raise form_trigger_failure; -- LEVANTA EL TRIGGER (EVENTO) --
ELSE IF not (:acsecc_grup.num_periodo) is null THEN – condiciona si el numero de periodo no es nulo-
NEXT_ITEM; -- Se mueve al proximo item –
END IF;
END IF;

Curso Programación RAD Julio César Hdez, MTE


Basado en ORACLE
CICLOS

Bloques de PL/SQL que ejecutan instrucciones repetitivas. Son comandos que permiten
la repetición de una secuencia de sentencias, un número de veces determinada.

1- Ciclo simple (LOOP)


2- Ciclo condicional numérico (FOR)
3- Ciclo condicional (WHILE)

LOOP: Uno de los ciclos mas utilizado en el desarrollo de aplicaciones, permitiendo


ejecutarse hasta que se ejecute la opción salida EXIT, si esta no se ejecuta el ciclo se hace
infinito. Dicha salida puede ser condicionada.

Sintaxis:

Loop
<secuencia de sentencias>
exit [when <condicion>];

end loop;

Ej:
Loop -- inicia ciclo --
if not (:acestudiante.ano_mat is null ) then -- si el año matricula no es nulo --
busca_estudiante; -- llama procedimiento que busca si existe el estudiante --
else -- de lo contrario --
exit; -- rompe el ciclo --
end if;

end loop; -- finaliza ciclo –

FOR… END LOOP: Repite una secuencia de sentencias un número fijo de veces. Es un
condicional numérico.

Sintaxis:

FOR <indice> IN [REVERSE] <entero>..<entero>


<secuencia de sentencias>
END LOOP;

Notas: El índice del ciclo toma cada uno de los valores dentro del rango en orden
ascendente o descendente (REVERSE). El índice es implícitamente de tipo numérico.
Solamente es definido dentro del ciclo. El valor del índice puede ser referenciado en una
expresión pero un nuevo valor no puede ser asignado al índice dentro del ciclo.

Curso Programación RAD Julio César Hdez, MTE


Basado en ORACLE
Ej:
Begin
/** Modulo que inserta las matriculas de los estudiantes desde el 1 hasta el 500
incrementado el numero de matriculas **/
FOR X IN 1..500 LOOP
Insert into acestudiante (ano_mat, matricula)
values (:acestudiante.ano_mat, :acestudiante.matricula + x);

END LOOP;
End;

WHILE :
Repite una secuencia de sentencias hasta que una condición específica se cumpla (ciclo
condicional).

Sintaxis:

WHILE <condicion> LOOP


<secuencia_de_sentencias>
END LOOP;

Ej:

DECLARE
x number(3) :=0; -- Declara variable para incrementar --
BEGIN
WHILE x < 500 LOOP – condiciona valor de variable e inicia ciclo –
x := x+1; -- Incrementa variable --
Insert into acestudiante (ano_mat, matricula)
values (:acestudiante.ano_mat, :acestudiante.matricula + x);
END LOOP;
End;

Curso Programación RAD Julio César Hdez, MTE


Basado en ORACLE
IMPLEMENTACION DE BLOQUES DE SQL EN PL/SQL

PL/SQL ha permitido combinar el poder de manipulación de datos de SQL con el


poder de procesamiento de un lenguaje procedimental. Las instrucciones de SQL pueden
ser implementadas en PL/SQL.

Ej: Utilizando la instrucción SELECT


Requiere de la instrucción INTO para asignar el valor retornado,

/** procedimiento que chequea la prematricula del estudiante **/


PROCEDURE chequea_prematricula_estud IS
BEGIN
declare -- declara variables y asigna valor --
ano_mat number(4) := 0; --esta variable contendrá el valor retornado del select --

begin

/** Seleciona el ano de la matricula desde la tabla de acprematricula cuando


la matricula y el periodo académico corresponda a los registrados en los
campos del bloque de la forma, obteniendo para este caso UNA SOLA
FILA **/

SELECT ano_mat --- dato que se desea obtener --


INTO ano_mat ---indica en que variable se depositar el valor obtenido--
FROM acprematricula --- tabla desde la que se ejecuta la consulta --
WHERE ano_mat = :ACINSCRIP.ano_mat
AND matricula = :ACINSCRIP.matricula
AND tipo_periodo = :ACINSCRIP.tipo_periodo
AND num_periodo = :ACINSCRIP.num_periodo
AND ano_programa = :ACINSCRIP.ano_programa
AND rownum < 2; --- permite retornar una sola fila --

Message(‘ESTUDIANTE PREMATRICULADO’);--Presenta mensaje--


Message(‘ESTUDIANTE PREMATRICULADO’):
RAISE FORM_TRIGGER_FAILURE; -- levanta evento (trigger) –

EXCEPTION WHEN NO_DATA_FOUND THEN --cuando no retorna datos--

Busca_asignatura; -- llama procedimiento que busca la asignatura--

end;

END;

Curso Programación RAD Julio César Hdez, MTE


Basado en ORACLE
NOTA
La instrucción “EXCEPTION WHEN NO_DATA_FOUND THEN”, es
necesaria que siempre acompañe un query “SELECT”, ya que en algún momento el
mismo puede NO RETORNAR DATOS.

Ej: Utilizando la instrucción INSERT


Requiere de la instrucción INTO para indicar la tabla donde se insertará y
VALUES indicando los valores a insertar, ya sea directamente o desde variables y
campos de formas.

BEGIN
/** Inserta datos en la tabla de acinscrip (inscripción) desde los campos del bloque
indicado **/
insert into acinscrip
values(:acinscrip.ano_mat,:acinscrip.matricula,:acinscrip.area,
:acinscrip.clave, :acinscrip.tipo_periodo,:acinscrip.num_periodo,
:acinscrip.ano_programa);
END;

Ej: Utilizando la instrucción UPDATE

/** Actualiza en la tabla de acinscrip (inscripción) el estado de la asignatura


PE(Prematriculada) y la coloca como AI(Asignatura Inscrita) para un estudiante en
especifico en un periodo determinado **/

Campo a actualizar
en la tabla

update acinscrip set estado_i = ‘AI’


where ano_mat = :acinscrip.ano_mat
and matricula = :acinscrip.matricula
and tipo_periodo = :acinscrip.tipo_periodo
and num_periodo = :acinscrip.num_periodo
and ano_programa = :acinscrip.ano_programa
and estado_i = ‘PE’;

Curso Programación RAD Julio César Hdez, MTE


Basado en ORACLE

También podría gustarte