Está en la página 1de 22

CURSO PL-SQL

Objetivo del uso de PL-SQL

Utilizar sentencias SQL para manipular datos en Oracle y sentencias de


control de flujo para organizar esta manipulación de datos.

Dentro del lenguaje, es posible declarar constantes y variables, definir


procedimientos y funciones y atrapar errores en tiempo de ejecución. Así
visto, PL/SQL combina el poder de la manipulación de datos, con SQL, y
las facilidades del procesamiento de los mismos, tal como en los más
modernos lenguajes de programación.
CURSO PL-SQL
VENTAJAS DE PL SQL

Las ventajas de usar procedimientos y funciones en lugar de


scripts SQL son:

- Facilidad para gestionar la seguridad.

-Mejor rendimiento al estar compilados y almacenados en la


base de datos.

- Mejor gestión de la memoria.


- Mayor productividad e integridad.
Estructuras de Bloque

la unidad básica de codificación son


bloques lógicos que pueden ser
anónimos o almacenados.

Los bloques lógicos pueden contener


Sub-bloques.
Sintaxis de una función PLSQL:
Sintaxis de un procedimiento PLSQL:
CREATE OR REPLACE FUNCTION [esquema].nombre-funcion
CREATE OR REPLACE PROCEDURE [esquema].nombre-procedim
(nombre-parámetro {IN, OUT, IN OUT} tipo-de-dato, ..)
(nombre-parámetro {IN, OUT, IN OUT} tipo de dato, ..) {IS, AS}
RETURN tipo-de-dato {IS, AS}
Declaración de variables;
Declaración de variables;
Declaración de constantes;
Declaración de constantes;
Declaración de cursores;
Declaración de cursores;
BEGIN
BEGIN
Cuerpo del subprograma PL/SQL;
Cuerpo del subprograma PL/SQL;
EXCEPTION
EXCEPTION
Bloque de excepciones PL/SQL;
Bloque de excepciones PL/SQL;
END;
END;
IN: especifica que el parámetro es de entrada y que por tanto dicho parámetro tiene que tener un valor en el
momento de llamar a la función o procedimiento. Si no se especifica nada, los parámetros son por defecto de tipo
entrada.

OUT: especifica que se trata de un parámetro de salida. Son parámetros cuyo valor es devuelto después de la ejecución
el procedimiento al bloque PL/SQL que lo llama. Las funciones PLSQL no admiten parámetros de salida.

IN OUT: Son parámetros de entrada y salida a la vez.


Estructuras de Bloque

1. Declarativa: sentencias que declaran variables,


constantes y otros elementos de código, que después
pueden ser usados dentro del bloque.

2.Ejecutable: sentencias que se ejecutan cuando se


ejecuta el bloque.

3.Manejo de excepciones: una sección especialmente


estructurada para atrapar y manejar cualquier excepción
que se produzca durante la ejecución de la sección
ejecutable
Nota: Sólo la sección ejecutable es obligatoria. No es necesario que usted declare nada en un bloque, ni que maneje las excepciones que se puedan lanzar.

https://www.oracle.com/technetwork/es/articles/sql/construyendo-con-bloques-parte-1-1549135-esa.html
3
Bloques anonimos
1

2
4
Bloques anonimos 7
5

6
Bloques anónimos con variables
Bloques anonimos El siguiente bloque declara una variable de tipo VARCHAR2 (un string)
con un largo máximo de 100 bytes para contener el string ‘¡Hola
5 Mundo!’. Después, el procedimiento DBMS_OUTPUT.PUT_LINE
acepta la variable, en lugar del literal, para desplegarlo:

DECLARE
l_mensaje VARCHAR2(100) := '¡Hola Mundo!';

BEGIN
DBMS_OUTPUT.put_line(l_mensaje);

END;
6
Bloques anónimos con excepciones

El siguiente ejemplo de bloque agrega una sección de


manejo de excepciones que atrapa cualquier excepción
(WHEN OTHERS) que pueda ser lanzada y muestra el
mensaje de error, que es retornado por la función
SQLERRM (provista por Oracle).
Bloques anónimos con excepciones y Anidados

El siguiente ejemplo de bloque demuestra la habilidad de


PL/SQL de anidar bloques dentro de bloques así como el uso
del operador de concatenación (||) para unir múltiples strings

Anidamiento del bloque:


Los pasos que sigue Oracle para ejecutar un
procedimiento o función son los siguientes:

- Verificar si el usuario tiene permiso de ejecución


- Verificar la validez del procedimiento o función.
- Y finalmente ejecutarlo.
INSERT INTO personal VALUES ( 1, 'Juan', 'ramirez',
Bloques anónimos- Práctica 'ingeniero', 4);

INSERT INTO personal VALUES ( 3, 'Manuel',


'Cardenas', 'economista', 4);

CREATE TABLE registro


(
mensaje char(20)
);
Bloques anónimos- Con Sql developer
procedimientos almacenados

Ejecución:

Ya aparece en sqldeveloper:
procedimientos almacenados

Ejecución con Sqldeveloper:


Prueba con parámetros:

Ejecución sql developer:

Ejecución consola sql:


procedimientos almacenados

Ejecución con sqldeveloper:


Ejecución de dos procedimientos de
Tambien es posible ejecutar en un
forma simultanea:
bloque el mismo o varios
procedimientos almacenados de
forma simultanea

Ejecución sql developer:

Ejecución sql developer


Introducción a funciones

Este subprograma se diferencia del


procedimiento original en lo El tipo de programa es ahora FUNCTION y no
siguiente: PROCEDURE.

• El nombre del subprograma ahora describe los datos


que se devuelven, no las acciones tomadas.

•El cuerpo o la implementación del subprograma contiene


ahora una cláusula RETURN que construye el mensaje y
Ejecución sql developer: lo devuelve al bloque llamador.

•La cláusula RETURN después de la lista de parámetros


establece el tipo de datos devuelto por la función.
Usar función en una inserción
Esta inserción invoca la función

Ejecución sql developer:

función
Funciones DUAL
Algunas funciones numéricas predeterminadas que se pueden usar en PL

SELECT ROUND from dual;

--función valor absoluto:


SELECT ABS(precio) from dual; Ver practica
1.inicio plsql
--función coseno
SELECT COS(180) from dual;

--modu8lo de la división entre dos números


SELECT MOD(11,5) from dual;

--APROXIMAR al entero por debajo del decimal


SELECT FLOOR(15.29) FROM DUAL;

--Función exponencial de Euler


SELECT EXP(1) FROM DUAL;
Funciones DUAL

--RAIZ CUADRADA DE UN NUMERO O VARIABLE


SELECT SQRT(8) FROM DUAL;

--FUNCIONES A NIVEL TEXTO CADENA----------------------------

--Iniciales en mayúsculas
SELECT INITCAP ('JAVIER ALBERTO PEREZ' ) FROM DUAL;

SELECT LOWER ('JAVIER ALBERTO PEREZ' ) FROM DUAL;

--agrega valores de tipo caracter


SELECT RPAD('RAMIREZ', 12, 'ab') FROM DUAL;

--agrega valores de tipo caracter


SELECT LPAD('RAMIREZ', 12, 'ab') FROM DUAL;
Funciones DUAL
FUNCIONES A NIVEL DE FECHAS------------------------------------------

--Muestra fecha actual


select sysdate + 365 from dual;

--agrega en meses a la fecha de la tabla Y convierte a texto los


meses, días o años y los muestra en el formato
--predeterminado

SELECT TO_CHAR( ADD_MONTHS (fecha,1), 'DAY-MON-YYYY')


FROM registro2
where mensaje = 'No existe el registro';

--calcula lso mese trnscurridos netre ds fechas


SELECT ROUND (MONTHS_BETWEEN
((TO_DATE ('07-15-1997', 'MM-DD-YYYY'),
TO_DATE ('09-30-2015', 'MM-DD-YYYY'))*30/365 ) "ead de
Edwin"
FROM DUAL;
Funciones DUAL
funciones agregadas sobre excel;

SELECT abs(-15) "valor absluto" from dual;

SELECT acos(.15) "arco coseno" from dual;

SELECT ceil(2.3) "m,entero mayor, igual que n" from dual;

SELECT exp(3) "e elevad a la 3" from dual;

SELECT floor(13.3) "menor entero o igual n" from dual;

SELECT mod(11,3) "modulo" from dual;

También podría gustarte