Está en la página 1de 14

UNIVERSIDAD ALAS PERUANAS

FACULTAD DE INGENIERÍAS Y ARQUITECTURA


ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA
DE SISTEMAS E INFORMÁTICA

BASE DE DATOS

FUNCIONES PL/SQL Y PROCEDIMIENTOS


ALMACENADOS

PRESENTADO POR LOS ALUMNOS

WILL MONTEZA LLACTAHUAMÁN


JOSÉ JAYO ALLCCA

DOCENTE
JUAN CARLOS MAMANI CHAMBI

AYACUCHO-PERÚ

2017
CAPÍTULO I: DESARROLLO DEL TEMA
1.1. Funciones PL/SQL
1.1.1. Definición

Es un lenguaje de procesamiento procedimental implementado por Oracle ©


está constituido por un conjunto de sentencias SQL y PL/SQL lógicamente
agrupados para realizar una tarea específica. Tiene por objetivo la interacción
con la base de datos. Son dinámicos ya que admiten parámetros que les
pueden ser asignados antes de su ejecución. Por lo tanto, una función PL/SQL
puede realizar diferentes tareas dependiendo de los parámetros que le hayan
asignado.

1.1.2. Creación

Sintaxis:
CREATE OR REPLACE FUNCTION [esquema].nombre-funcion
(nombre-parámetro {IN, OUT, IN OUT} tipo-de-dato, ..)
RETURN tipo-de-dato {IS, AS}
Declaración de variables;
Declaración de constantes;
Declaración de cursores;
BEGIN
Cuerpo del subprograma PL/SQL;
EXCEPTION
Bloque de excepciones PL/SQL;
END;

Aclaraciones sobre la sintaxis

A. Nombre-parámetro

Es el nombre que nosotros queramos dar al parámetro. Podemos utilizar


múltiples parámetros. En caso de no necesitarlos podemos omitir los
paréntesis.

B. 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.

C. 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 llamó. Las funciones PLSQL no admiten parámetros de
salida.
D. IN OUT

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

E. RETURN

Cláusula RETURN especifica qué tipo de datos que se va a volver de la


función.

F. Tipo-de-dato

Indica el tipo de dato PLSQL que corresponde al parámetro (NUMBER,


VARCHAR2, etc).

1.1.3. Ejecución

Desde dónde llamarlas:

A. Como columna de un SELECT.


B. Condiciones en cláusulas WHERE y HAVING.
C. Cláusulas ORDER BY y GROUP BY.
D. Cláusula VALUES de un comando INSERT.
E. Cláusula SET de un comando UPDATE.

1.1.4. Restricciones

A. No se permiten comandos INSERT, UPDATE o DELETE.


B. La función no puede llamar a otro subprograma que rompa una de las
restricciones arriba indicadas

1.1.5. Eliminación

Para quitar una función de la parte del servidor, utilizando SQL*Plus,


ejecutar el comando DROP FUNCTION

Sintaxis:
DROP FUNCTION nombre_de_función;

1.1.6. Ejercicios prácticos

A. Función PL/SQL “totalCustomers”

1. Creación de la tabla “customers”:


Create table customers
(ID number(5) not null,
NAME varchar(25) not null,
ADDRESS varchar(25) not null,
SALARY number(6) not null);

2. Inserción de datos en la tabla “customers”:

insert into customers values


(1, 'Mario', 'Av Perú 479', 1750)
insert into customers values
(2, 'Rodolfo', 'Av Lima 578', 1550)
insert into customers values
(3, 'Alejandra', 'Av Cantuta 695', 2150)
insert into customers values
(4, 'Sarah', 'Av 28 de Julio 451', 2550)
insert into customers values
(5, 'Wilmar', 'Av Alfonso Ugarte 365', 3150)
insert into customers values
(6, 'Victor', 'Av La Marina 985', 1150)

3. Creación de la función “totalCustomers”:


CREATE OR REPLACE FUNCTION totalCustomers
RETURN number IS
total number(2) := 0;
BEGIN
SELECT count(*) into total
FROM customers;

RETURN total;
END;

4. Resultado de la creación de la función “totalCustomers”:

FUNCTION totalCustomers Compiled.

5. Ejecución:
a) Localizar la función y elegir la opción “Run”
b) Generar y editar el código de ejecución.

c) Aceptar y obtener los resultados de la ejecución.


B. Función PL/SQL “mayorSueldo”

1. Creación de la tabla “customers”:


Create table customers
(ID number(5) not null,
NAME varchar(25) not null,
ADDRESS varchar(25) not null,
SALARY number(6) not null);

2. Inserción de datos en la tabla “customers”:

insert into customers values


(1, 'Mario', 'Av Perú 479', 1750)
insert into customers values
(2, 'Rodolfo', 'Av Lima 578', 1550)
insert into customers values
(3, 'Alejandra', 'Av Cantuta 695', 2150)
insert into customers values
(4, 'Sarah', 'Av 28 de Julio 451', 2550)
insert into customers values
(5, 'Wilmar', 'Av Alfonso Ugarte 365', 3150)
insert into customers values
(6, 'Victor', 'Av La Marina 985', 1150)

3. Creación de la función “totalCustomers”:

CREATE OR REPLACE FUNCTION mayorSueldo


RETURN number
IS--indica que lo siguiente será el contenido de
la función
sueldoMayor number(6,0) := 0;--definición de
variable interna
BEGIN
SELECT max(G.SALARY) into sueldoMayor--
Asiganciòn de valor a la variable mediante
consulta SELECT
FROM customers G;--Cláusula FROM indica la
fuente (tabla) de los registros a consultar

RETURN sueldoMayor;--Cláusula RETURN indica que


END;

4. Resultado de la creación de la función “totalCustomers”:

FUNCTION mayorSueldo Compiled.

5. Ejecución:
a) Localizar la función y elegir la opción “Run”

b) Generar y editar el código de ejecución.


c) Aceptar y obtener los resultados de la ejecución.

1.2. Procedimientos almacenados


1.2.1. Definición

Estos subprogramas no devuelven un valor directamente, utilizado


principalmente para realizar una acción

1.2.2. Creación

Un procedimiento se crea con la sentencia CREATE OR REPLACE


PROCEDIMIENTO. La sintaxis simplificada para la sentencia CREATE OR
REPLACE procedimiento es el siguiente:

CREATE [OR REPLACE] PROCEDURE procedure_name


[(parameter_name [IN | OUT | IN OUT] type [, ...])]
{IS | AS}
BEGIN
< procedure_body >
END procedure_name;
Dónde:

A. procedure_name

Especifica el nombre del procedimiento.

B. [OR REPLACE]

Opción que permite modificar un procedimiento existente.

C. La lista de parámetros opcionales contiene el nombre, el modo y tipo de


los parámetros. EN representa ese valor se pasará desde el exterior y
OUT representa que este parámetro se utiliza para devolver un valor
fuera del procedimiento.

D. procedure_body

Contiene el cuerpo del procedimiento es cuál es la parte ejecutable.

E. La palabra clave AS se utiliza en lugar de la palabra clave es la creación


de un procedimiento independiente.

1.2.3. Ejecución

A. Un procedimiento independiente puede ser llamado de dos maneras:

1. El uso de la palabra clave EXECUTE


2. Al llamar al nombre del procedimiento de un bloque PL / SQL

B. Un procedimiento con parámetros puede ser llamado con la siguiente


sintaxis:

BEGIN
nombre_procedimiento(valor_parametro1,valor_param
etro2,...);
COMMIT;
END;

1.2.4. Modos de parámetros

A. IN

Un parámetro IN permite pasar un valor al subprograma. Es un parámetro


de sólo lectura. Dentro del subprograma, un parámetro IN actúa como una
constante. No se puede asignar un valor. Puede pasar una constante,
literal, una variable inicializada, o la expresión como un parámetro IN.
También puede inicializar a un valor predeterminado; Sin embargo, en ese
caso, se omite de la llamada de subprograma. Es el modo por defecto de
paso de parámetros. Los parámetros se pasan por referencia.
B. OUT

Un parámetro OUT devuelve un valor al programa de llamada. Dentro del


subprograma, un parámetro OUT actúa como una variable. Puede
cambiar su valor y el valor de referencia después de asignar la misma. El
parámetro real debe ser variable y se pasa por valor.

C. IN OUT

Un parámetro IN OUT pasa a un valor inicial a un subprograma y devuelve


un valor actualizado de la persona que llama. Se puede asignar un valor
y su valor se puede leer.

El parámetro real correspondiente a un parámetro formal IN OUT debe ser


una variable, no una constante o una expresión. Parámetro formal se le
debe asignar un valor. Parámetro actual se pasa por valor.

1.2.5. Eliminación

Un procedimiento independiente se elimina con la instrucción DROP


PROCEDURE. Sintaxis para la eliminación de un procedimiento es:

DROP PROCEDURE nombre_procedimiento;

1.2.6. Ejercicios prácticos

A. Procedimiento independiente “PA_Saludos”

1. Creación del procedimiento independiente.


a) Sintaxis:
CREATE OR REPLACE PROCEDURE saludos
AS
BEGIN
dbms_output.put_line('Hello World!');
END;
/

b) Compilación:

FUNCTION mayorSueldo Compiled.


2. Ejecución del procedimiento independiente.

a) Localizar en procedimiento almacenado y elegir la opción “Run”

3. Resultado de la ejecución del procedimiento independiente.


B. Procedimiento con parámetros “PA_valorMin”
1. Creación del procedimiento independiente.
a) Sintaxis:
DECLARE
--Se declaran las variables locales--
a number;
b number;
c number;

PROCEDURE PA_valorMin(x IN number, y IN number, z


OUT number)
--se define el procedimiento y los tipos de
parametros--
IS
--a continuación las sentencias del parámetro--
BEGIN
--condicional que detecta el número menor de 2
números--
IF x < y THEN
z:= x;
ELSE
z:= y;
END IF;
END;

BEGIN
--asignación de valores a las 2 variables
numéricas--
a:= 23;
b:= 45;
PA_valorMin(a, b, c);
dbms_output.put_line('El mínimo de los dos
valores ingresados es: ' || c);
END;
/

b) Compilación:

También podría gustarte