0% encontró este documento útil (0 votos)
161 vistas19 páginas

Operadores y Control en Oracle PL/SQL

Este documento explica el uso de operadores y estructuras de control en PL/SQL en Oracle 11g R2. Explica los diferentes tipos de operadores como relacionales, aritméticos, de concatenación y lógicos. También describe las principales estructuras de control como IF, CASE, bucles FOR, WHILE y LOOP, y la estructura GOTO. El objetivo es proporcionar una guía clara sobre cómo utilizar estos elementos fundamentales de PL/SQL.

Cargado por

mikipmax
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
161 vistas19 páginas

Operadores y Control en Oracle PL/SQL

Este documento explica el uso de operadores y estructuras de control en PL/SQL en Oracle 11g R2. Explica los diferentes tipos de operadores como relacionales, aritméticos, de concatenación y lógicos. También describe las principales estructuras de control como IF, CASE, bucles FOR, WHILE y LOOP, y la estructura GOTO. El objetivo es proporcionar una guía clara sobre cómo utilizar estos elementos fundamentales de PL/SQL.

Cargado por

mikipmax
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 DOCX, PDF, TXT o lee en línea desde Scribd

FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICA

CARRERA DE INGENIERÍA INFORMÁTICA


BASES DE DATOS III

TEMA:

OPERADORES Y ESTRUCTURAS DE CONTROL EN ORACLE 11G R2

ESTUDIANTE:

Michael Ponce Cevallos

SEMESTRE:

Sexto

DOCENTE:

Ing. Jorge Gordillo

QUITO - ECUADOR

2019-2019
CONTENIDO
INTRODUCCIÓN ....................................................................................................................................... 3
1. OBJETIVOS ........................................................................................................................................ 4
1.1. Objetivo general .......................................................................................................................... 4
1.2. Objetivos específicos: .................................................................................................................. 4
2. MARCO TEÓRICO............................................................................................................................ 4
2.1 Operadores ......................................................................................................................................... 4
2.2 Bloques pl/sql ................................................................................................................................... 10
2.3 ESTRUCTURAS DE CONTROL ................................................................................................. 11
3. CONCLUSIONES ............................................................................................................................. 18
Bibliografía................................................................................................................................................... 19
INTRODUCCIÓN

El trabajo realizado hasta ahora con la base de datos se ha hecho de forma interactiva: el

usuario introducía una orden (en SQL) y Oracle proporcionaba una respuesta. Esta forma de

trabajar no resulta operativa en un entorno de producción. Para superar estas limitaciones, Oracle

incorpora un gestor PL/SQL en el servidor de la BD.

Este lenguaje incorpora todas las características propias de los lenguajes de tercera

generación tales como: manejo de variables, estructura modular (procedimientos y funciones),

estructuras de control (bifurcaciones, bucles y demás estructuras), control de excepciones, y una

total integración en el entorno Oracle

De entre todas estas características el siguiente documento se encargará de explicar de

forma clara, el uso de los operadores y estructuras de control PL/SQL.

Operadores y estructuras de control en Oracle 11g R2 Página 3


1. OBJETIVOS

1.1. Objetivo general

 Explicar el uso de los operadores y las estructuras de control en PL/SQL

1.2. Objetivos específicos:

 Indicar los operadores de control usados en PL/SQL


 Explicar el uso de la estructura condicional IF.
 Explicar el uso de la estructura condicional CASE.
 Explicar el uso del bucle FOR.
 Explicar el uso del bucle WHILE.
 Explicar el uso del bucle LOOP.
 Explicar el uso de la estructura GOTO.

2. MARCO TEÓRICO

2.1 Operadores

Los operadores son símbolos que permiten realizar operaciones matemáticas, concatenar cadenas,

hacer comparaciones.

Oracle reconoce de 4 tipos de operadores:

 Relacionales (o de comparación)

 Aritméticos

 Concatenación

 Lógicos

 Los operadores relacionales (o de comparación)

Nos permiten comparar dos expresiones, que pueden ser variables, valores de campos, etc.

Los operadores relacionales comparan valores del mismo tipo.

Se emplean para comprobar si un campo cumple con una condición.

Operadores y estructuras de control en Oracle 11g R2 Página 4


Ejemplo:

select * from libros


where autor='Borges';

Utilizamos el operador relacional de igualdad.

Los operadores relacionales vinculan un campo con un valor para que Oracle compare cada

registro (el campo especificado) con el valor dado.

Los operadores relacionales son los siguientes:

:= asignación

= igual

<> distinto

> mayor

< menor

>= mayor o igual

<= menor o igual

Podemos comparar valores numéricos.

Ejemplo:

Mostrar los títulos y precios de los libros cuyo precio sea mayor a 20 pesos:

select título, precio


from libros
where precio>20;

 Otros operadores relacionales

is null

Operadores y estructuras de control en Oracle 11g R2 Página 5


Para recuperar los registros que contengan el valor "null" en algún campo, no podemos utilizar

los operadores relacionales vistos anteriormente: = (igual) y <> (distinto); debemos utilizar los

operadores "is null" (es igual a null) y "is not null" (no es null).

Ejemplo:

Mostrar los libros que contienen valor nulo en el campo "editorial":

select * from libros


where editorial is null;

Recuerde que los valores nulos no se muestran, aparece el campo vacío.

between

Trabaja con intervalos de valores.

Ejemplo:

Podemos especificar un intervalo de valores de tipo fecha con "between":

select * from libros


where edicion between '01/05/2000' and '01/05/2007';

"between" significa "entre". Trabaja con intervalo de valores.

Este operador no tiene en cuenta los valores "null".

Si agregamos el operador "not" antes de "between" el resultado se invierte, es decir, se recuperan

los registros que están fuera del intervalo especificado.

Ejemplo:

Mostrar los libros cuyo precio NO se encuentre entre 20 y 30, es decir, los menores a 20 y

mayores a 30:

select * from libros


where precio not between 20 and 30;

in

Operadores y estructuras de control en Oracle 11g R2 Página 6


Se utiliza "in" para averiguar si el valor de un campo está incluido en una lista de valores

especificada.

Ejemplo:

Averiguar si el valor del campo autor está incluido en la lista de valores especificada (en este

caso, 2 cadenas).

select * from libros


where autor in('Borges','Paenza');

Para recuperar los libros cuyo autor no sea 'Paenza' ni 'Borges'.

select * from libros


where autor not in ('Borges','Paenza');

Empleando "in" averiguamos si el valor del campo está incluido en la lista de valores

especificada; con "not" antecediendo la condición, invertimos el resultado, es decir, recuperamos

los valores que no se encuentran (no coinciden) con la lista de valores. Los valores "null" no se

consideran.

Operadores aritméticos (columnas calculadas)

Permiten realizar cálculos con valores numéricos.

Son: multiplicación (*), división (/), suma (+), resta (-) y exponente (**).

Es posible obtener salidas en las cuales una columna sea el resultado de un cálculo y no un

campo de una tabla.

Ejemplo:

Si queremos saber el precio de cada libro con un 10% de descuento podemos incluir en la

sentencia los siguientes cálculos:

select titulo,precio,precio-(precio*0.1)
from libros;

También podemos actualizar los datos empleando operadores aritméticos:

Operadores y estructuras de control en Oracle 11g R2 Página 7


update libros set precio=precio-(precio*0.1);

 Concatenación

Para concatenar cadenas de caracteres existe el operador de concatenación ||.

Ejemplo:

Para concatenar el título y el autor de cada libro usamos el operador de concatenación ("||").

select título||'-'||autor
from libros;

Si se desea separar los campos se concatena además un guion.

Oracle puede convertir automáticamente valores numéricos a cadenas para una concatenación.

Ejemplo:

Mostrar el título y precio de cada libro concatenado con el operador "||".

select titulo||' $'||precio


from libros;

 Operadores lógicos

Los operadores lógicos se usan para combinar condiciones.

Podemos establecer más de una condición con la cláusula "where", para ello es necesario los

operadores lógicos.

Son los siguientes:

and significa "y",

or significa "y/o",

not significa "no", invierte el resultado

() paréntesis

Ejemplo:

Mostrar todos los libros cuyo autor sea igual a "Borges" y cuyo precio no supere los 20 pesos.

Operadores y estructuras de control en Oracle 11g R2 Página 8


select * from libros
where (autor='Borges') and
(precio<=20);

Mostrar los libros cuyo autor sea "Borges" y/o cuya editorial sea "Planeta":

select * from libros


where autor='Borges' or
editorial='Planeta';

Mostrar los libros que NO cumplan la condición dada, por ejemplo, aquellos cuya editorial NO

sea "Planeta":

select *from libros


where not editorial='Planeta';

El operador "not" invierte el resultado de la condición a la cual antecede.

Los registros recuperados en una sentencia en la cual aparece el operador "not", no cumplen con

la condición a la cual afecta el "NOT".

Los paréntesis se usan para encerrar condiciones, para que se evalúen como una sola expresión.

Cuando explicitamos varias condiciones con diferentes operadores lógicos (combinamos "and",

"or") permite establecer el orden de prioridad de la evaluación; además permite diferenciar las

expresiones más claramente.

Ejemplo:

Las siguientes expresiones devuelven un resultado diferente:

select * from libros


where (autor='Borges') or
(editorial='Paidos' and precio<20);

select *from libros


where (autor='Borges' or editorial='Paidos') and
(precio<20);

Si bien los paréntesis no son obligatorios en todos los casos, se recomienda utilizarlos para evitar

confusiones.

Operadores y estructuras de control en Oracle 11g R2 Página 9


El orden de prioridad de los operadores lógicos es el siguiente: "not" se aplica antes que "and" y

"and" antes que "or", si no se especifica un orden de evaluación mediante el uso de paréntesis. El

orden en el que se evalúan los operadores con igual nivel de precedencia es indefinido, por ello se

recomienda usar los paréntesis.

2.2 Bloques pl/sql

Un programa de PL/SQL está compuesto por bloques. Un programa está compuesto como

mínimo de un bloque.

Los bloques de PL/SQL pueden ser de los siguientes tipos:

Bloques anónimos

Subprogramas

Estructura de un Bloque

Los bloques PL/SQL presentan una estructura específica compuesta de tres partes bien

diferenciadas:

La sección declarativa en donde se declaran todas las constantes y variables que se van a utilizar

en la ejecución del bloque.

La sección de ejecución que incluye las instrucciones a ejecutar en el bloque PL/SQL.

La sección de excepciones en donde se definen los manejadores de errores que soportará el

bloque PL/SQL.

Cada una de las partes anteriores se delimita por una palabra reservada, de modo que un bloque

PL/SQL se puede representar así:

[ declare | is | as ]
/*Parte declarativa*/
begin
/*Parte de ejecucion*/

Operadores y estructuras de control en Oracle 11g R2 Página 10


[ exception ]
/*Parte de excepciones*/
end;

Únicamente la sección de ejecución es obligatoria, que quedaría delimitada entre las cláusulas

BEGIN y END. Veamos un ejemplo de bloque PL/SQL muy genérico. Se trata de un bloque

anónimos, es decir no lo identifica ningún nombre. Los bloques anónimos identifican su parte

declarativa con la palabra reservada DECLARE.

DECLARE
/*Parte declarativa*/
nombre_variable DATE;
BEGIN
/*Parte de ejecucion
* Este código asigna el valor de la columna "nombre_columna"
* a la variable identificada por "nombre_variable"
*/
SELECT SYSDATE
INTO nombre_variable
FROM DUAL;
EXCEPTION
/*Parte de excepciones*/
WHEN OTHERS THEN
dbms_output.put_line('Se ha producido un error');
END;

2.3 ESTRUCTURAS DE CONTROL

Permiten controlar el comportamiento del bloque a medida que este se ejecuta. Estas estructuras

incluyen las órdenes condicionales y los bucles.

Permiten elegir la forma en que se van a ejecutar las diferentes instrucciones.

Estas estructuras, junto con las variables, son las que dotan al lenguaje PL/SQL de su poder y

flexibilidad.

Los posibles son:

o Secuencial: las instrucciones se ejecutan una detrás de otra.

Operadores y estructuras de control en Oracle 11g R2 Página 11


o Alternativa: las instrucciones se ejecutan en función de una condición.

o Repetitiva: las instrucciones se ejecutan varias veces en función de una condición.

Se tienen las siguientes estructuras de control:

 IF…THEN…ELSE…END IF
 CASE…WHEN…END CASE
 LOOP…END LOOP
 WHILE…LOOP…END LOOP
 FOR…LOOP…END LOOP
 GOTO
 NULL

 IF
Permite ejecutar instrucciones en función de una condición

Su sintaxis se muestra a continuación:

IF (expresion) THEN
-- Instrucciones
ELSIF (expresion) THEN
-- Instrucciones
ELSE
-- Instrucciones
END IF;

Un aspecto a tener en cuenta es que la instrucción condicional anidada es ELSIF y no "ELSEIF".


Los operadores más utilizados en las condiciones son los mismos que en SQL.
Ejemplo:
Si se trata del cliente número 10, se actualiza; en caso contrario, la transacción se anula.

if Vnumcli=10 then
update clientes set nomcli=’Torres’ where numcli=Vnumcli;
commit;
else
rollback;
end if;

 CASE

Operadores y estructuras de control en Oracle 11g R2 Página 12


Permite una ejecución condicional, al igual que la instrucción IF. Sin embargo, la instrucción

CASE se adapta especialmente bien a las condiciones que implican numerosas opciones

diferentes. Proporciona una presentación que hace que el código se lea mejor y, por tanto,

disminuye el riesgo de cometer errores. Además, el uso de CASE puede mejorar el rendimiento

durante la ejecución.

Sintaxis:

[<<Etiqueta>>]
case elemento_de_seleccion
when valor1 then instrucciones1;
when valor2 then instrucciones2;
…….
[else instrucciones;]
end case [etiqueta];

[<<etiqueta>>]
case
when condicion1 then instrucciones1;
when condicion2 then instrucciones2;
…….
[else instrucciones;]
end case [etiqueta];

La condición ELSE es opcional y solo se ejecuta si ninguna de las condiciones WHEN anteriores

se ejecuta. Si no se define la condición de ELSE, PL/SQL añade implícitamente la siguiente

condición ELSE; ELSE RAISE CASE_NOT_FOUND, (lo que genera una excepción).

La instrucción CASE puede presentar dos formas. En la primera de ellas, el valor que debe

comprobarse sigue inmediatamente a CASE y se hace una comprobación de igualdad con cada

valor que sigue a las instrucciones EHEN, para determinar si hay que ejecutar o no las

instrucciones PL/SQL asociadas. En su segunda forma., cada instrucción WHEN va seguida de

una condición y, cuando esta condición es verdadera, se ejecutan las instrucciones PL/SQL

asociadas.

Operadores y estructuras de control en Oracle 11g R2 Página 13


En cualquier caso, las instrucciones WHEN se evalúan de forma secuencial y solo se ejecuta la

primera que es verdadera.

Ejemplo

declare
grado char(1);
begin
grado:=’B’;
case grado
when ‘A’ then dbms_output.put_line(‘Excelente’);
when ‘B’ then dbms_output.put_line(‘Bueno’);
when ‘C’ then dbms_output.put_line(‘Regular’);
end case;
exception
when case_not_found then
dbms_output.put_line(‘Condicion fuera del case’);
end;
/

En el siguiente ejemplo se evalúa la condición de cada clausula WHEN, para saber si es necesario

ejecutar o no las instrucciones que siguen a la palabra clave THEN.

declare
provincia number:=32;
comunidad varchar2(40);
begin
case provincia
when provincia in (02,13,16,19,45)
then comunidad:=’Castilla-LaMancha’;
when provincia in (04,11,14,18,21,23,29,41)
then comunidad:=’Andalucia’;
when provincial in (15,27,32,36)
then comunidad:=’Galicia’;
end case;
end;
/
Este último ejemplo demuestra la posibilidad de anidar las instrucciones CASE. Con este tipo de

anidamiento, hay que tener en cuenta los problemas de claridad del código.

set serveroutput on
declare
provincia number:=32;

Operadores y estructuras de control en Oracle 11g R2 Página 14


comunidad varchar2(80);
nomprov varchar2(80);
begin
case provincia
when provincia in (02,13,16,19,45)
then comunidad:=’Castilla-LaMancha’;
when provincia in (04,11,14,18,21,23,29,41)
then comunidad:=’Andalucia’;
when provincia in (15,27,32,36)
then comunidad:=’Galicia’;
case provincia
when 32 then nomprov;=’Orense’;
when 36 then nomprov;=’Pontavedra’;
when 27 then nomprov;=’Lugo’;
when 15 then nomprov:=’La Coruña’;
else nomprov:=’Fuera de la comunidad’;
end case;
end case;
end;
/

 LOOP

El bucle LOOP, se repite tantas veces como sea necesario hasta que se fuerza su salida con la

instrucción EXIT o mediante la evaluación de una condición. Su sintaxis es la siguiente

Sintaxis

LOOP
-- Instrucciones
IF (expresion) THEN
-- Instrucciones
EXIT;
END IF;
END LOOP;

LOOP
-- Instrucciones
[EXIT [WHEN condicion]];
END LOOP;

Ejemplo:

loop

Operadores y estructuras de control en Oracle 11g R2 Página 15


insert into expediente
…….
if var1>50 then
exit;
end if;
end loop;

loop
insert into expediente
…….
exit when var1>50;
end loop;

Este bucle ejecutara una inserción en la tabla expediente hasta que el valor de la variable var1 sea

superior a 50.

 WHILE

La entrada en el bucle tiene lugar si la condición es verdadera.

A continuación, se ejecutan las instrucciones mientras la condición siga siendo verdadera.

El bucle WHILE, se repite mientras que se cumpla la condición.

Sintaxis

[<<etiqueta>>]
WHILE (condicion) LOOP
Instrucciones
……
END LOOP [etiqueta];

La condición es una combinación de expresiones relacionadas mediante los operadores <, >, =,

!=, AND, OR, LIKE, etc.

Ejemplo

Creación de 11 clientes consecutivos:

x:=200;
while x<=210 loop

Operadores y estructuras de control en Oracle 11g R2 Página 16


insert into clientes (numcli) values (x);
x:=x+1;
end loop
commit;

 FOR

El bucle FOR, se repite tanta vez como le indiquemos en los identificadores inicio y final.

Sintaxis

FOR contador IN [REVERSE] inicio..final LOOP


-- Instrucciones
END LOOP;

En el caso de especificar REVERSE el bucle se recorre en sentido inverso.

Ejemplo

for v_conta in 1..50 loop


insert into expediente
…….
end loop;

La variable que se utiliza como índice del bucle (contador) no es necesaria declararla

previamente en la sección DECLARE del bloque, se declara implícitamente cuando se asocia a

un bucle FOR y Oracle la gestiona con un tipo de dato BINARY_INTEGER.

 GOTO

PL/SQL dispone de la sentencia GOTO. La sentencia GOTO desvía el flujo de ejecución a una

determinada etiqueta.

En PL/SQL las etiquetas se indican del siguiente modo: << etiqueta >>

Sintaxis

GOTO etiqueta;

Ejemplo:

Operadores y estructuras de control en Oracle 11g R2 Página 17


declare
flag number;
begin
flag :=1 ;
if (flag = 1) then
goto paso2;
end if;
<<paso1>>
dbms_output.put_line('ejecucion de paso 1');
<<paso2>>
dbms_output.put_line('ejecucion de paso 2');
end;

 NULL

Permite introducirla en un bloque cuando no se quiere ejecutar operación alguna, pero es

necesario completar la sintaxis de una instrucción de control. Puede ser muy útil cuando se está

diseñando un programa en el que se empiezan a escribir las estructuras de control que se van a

utilizar, pero no se conoce aún el contenido de lo que tendrá que evaluar cada fase de la misma.

Ejemplo

if valor > 1 then


else
null;
end if;

3. CONCLUSIONES

 En PL/SQL el uso de los operadores y las estructuras de control es muy importante para el

buen manejo y la administración de una base de datos

 Las estructuras de control nos permiten la toma de decisiones cuando se tienen 2 o más

casos.

 El bucle While nos da la facilidad al momento de tener que realizar varias repeticiones de

las operaciones que necesitemos.

Operadores y estructuras de control en Oracle 11g R2 Página 18


Bibliografía

http://www.oracleya.com.ar/index.php?inicio=25

http://www.devjoker.com/contenidos/catss/61/Operadores-en-PLSQL.aspx

http://www.devjoker.com/contenidos/catss/33/Estructuras-de-control-en-PLSQL.aspx

http://es.slideshare.net/XxkokoxX10/sesion06d-estructuras-de-control-oracle

http://www.friccio.com/articulos/Taller_Oracle_PLSQL_22112010.pdf

https://books.google.com.ec/books?id=dGm6ppeU1-
oC&pg=PT243&lpg=PT243&dq=estructuras+de+control+en+oracle+11g&source=bl&ots=Q2jDFjcHKp&sig
=iLaf2cw26tZ5DHAQUqZ2bGI1Pno&hl=es&sa=X&ved=0ahUKEwjGmq_8oI7KAhVHNiYKHYMVCaMQ6AEII
DAB#v=onepage&q&f=false

https://books.google.com.ec/books?id=1XbTQs1hQhQC&pg=PA19&lpg=PA19&dq=estructuras+de+contr
ol+en+oracle+11g&source=bl&ots=9j1Q_NBgW4&sig=6NDOu3D6via0WoXHQrkBa2L_UaU&hl=es&sa=X&
ved=0ahUKEwjGmq_8oI7KAhVHNiYKHYMVCaMQ6AEILzAE#v=onepage&q=estructuras%20de%20control
%20en%20oracle%2011g&f=false

https://elbauldelprogramador.com/introduccion-plsql/

Operadores y estructuras de control en Oracle 11g R2 Página 19

También podría gustarte