INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN PL/SQL

Documentos relacionados
INTRODUCCIÓN A PL/SQL

Oracle Database 11g: Conceptos Fundamentales de SQL y PL/SQL Nuevo

Diseño de bases de datos

GUIA 3 PARTE II. Introducción a PL/SQL

Oracle Database: Conceptos Básicos de SQL y PL/SQL

Introducción a PL/SQL

Cadena de caracteres Numéricas Fecha y hora Booleanas Tipo registro Tipo cursor

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

Introducción a PL/SQL

Introducción a Transact-SQL

Oracle Database 10g: Conceptos Básicos de SQL y PL/SQL

Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1. Copyright 2008, Oracle. All rights reserved.

MANUAL BÁSICO DEL LENGUAJE SQL

Oracle Database 11g: Programación con PL/SQL Nuevo

Declaración de Variables. Copyright Oracle Corporation, All rights reserved.

Introducción a PL/SQL

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Para procesar instrucciones SELECT que devuelvan más de una fila, son necesarios cursores explicitos combinados con un estructura de bloque.

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

PL/SQL. Programming Language Structured Query Language

INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN PL/SQL CURSORES

Características del lenguaje SQL

Oracle Database 12c SQL and PLSQL Fundamentals

(LDD) VARCHAR2 (n) : alfanumérico (hasta 240) NUMBER (n,p) : números con signo y punto decimal

PL/SQL avanzado: Secuencias, triggers, cursores y subprogramas

Base de Datos Oracle 10g: Programación con PL/SQL NUEVO

Oracle Database: Programación con PL/SQL

Oracle Database: Programación con PL/SQL

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999

Interacción con el Servidor Oracle8. Copyright Oracle Corporation, All rights reserved.

Estructura general. Fundamentos. Comentarios. Tipos de datos. Funciones de conversión

Operando1 operador de relación Operando2

PRÁCTICA T2. El lenguaje procedural PL/SQL de Oracle

Introducción a las sentencias de control

Procedimientos almacenados en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

Introducción a Oracle PL / SQL 12c

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

INTRODUCCION A SQL CARACTERÍSTICAS DEL LENGUAJE ESTRUCTURADO DE CONSULTA SQL COMPONENTES DEL SQL

Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Está basado en el álgebra y en el cálculo relacional.

Introducción a SQL (DDL)

PROCEDIMIENTOS ALMACENADOS

GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL

UNIDAD I. ALGORITMOS

Triggers 24/12/2016. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL.

Oracle PL/SQL. Programa de Estudio.

Unidad 6. Procedimientos Almacenados y Disparadores

PRÓLOGO... XI CAPÍTULO 1. FUNDAMENTOS DEL LENGUAJE PL/SQL.

Triggers en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

TRIGGER LEONEL CADOSO ROMERO 1

Lo primero que se llevó a cabo fue la creación del entorno. Esto se llevó a cabo por medio de un usuario con privilegios DBA:

Introducción a MATLAB

Creación de una Base de datos

Los disparadores pueden emplearse para muchas cosas diferentes, incluyendo:

2.4. Unidades de aprendizaje. Modelo Académico de Calidad para la Competitividad PSGB-02 15/22

Examen de Ficheros y bases de datos Convocatoria de junio II PARCIAL

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Triggers. BASES DE DATOS Mercedes García Merayo

Diseño de bases de datos

DISPARADORES EN SQL SINTAXIS GENERAL DE UN DISPARADOR EN SQL:2003

Los procedimientos almacenados son nuevas funcionalidades de la versión de MySQL 5.0. Un procedimiento

Oracle Express y Toad for Oracle

Lenguaje PL/SQL. Instrucciones de Repetición

Conceptos de Bases de Datos Relacionales Triggers

TIPOS COMPUESTOS. Pueden contener varios valores, a diferencia de los tipos escalares. Existen dos tipos:

GUÍA DE TRABAJO N 5 GRADO 11 Programación y Diseño de Articulación SENA Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

ORACLE 11g &12c Developer PLSQL

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

Expresión, Operador, Operando, Asignación, Prioridad

GUÍA DE TRABAJO N 7 GRADO 11. Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6 GUIA N 7 COMANDOS MYSQL II. CREAR UNA TABLA

A. Introducción. B. Los DATABASES TRIGGERS. PL/SQL en objetos de la base de datos. Oracle 11g - SQL, PL/SQL, SQL*Plus 271

Introducción al lenguaje PL/SQL

Base de Datos Oracle 10g: Programación con PL/SQL Código: D Duración: 5 días (40 horas)

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

Bases de Datos 2: Procedimientos Almacenados, Funciones y Triggers. Tecnólogo en Informática, sede Paysandú Bases de Datos 2

GESTORES GESTORES DE BASES DE DATOS

Proposiciones Condicionales

Examen de Bases de datos Grado de Ingeniería en Informática, Febrero, 2015

2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

BASE DE DATOS ARTICULOS DE COMPUTACION.

Sistemas Gestores de Bases de Datos Tema 8: Fundamentos de PL/SQL

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Modelamiento y Diseño de Base de Datos

APÉNDICE D. INTRODUCCIÓN A SQL

Capítulo 8. Construcción de guiones

Diseña y Administra Bases de Datos Guía de Estudio

UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN

Triggers. Carmen Hernández Triggers y PL/SQL 2

Diseño de bases de datos

Tema 3 Constantes, Variables y Tipos

Manual de Sentencias Básicas en SQL

REGLAS DE CODD DEL MODELO RELACIONAL

Bases de Datos Ejercicio Número 2 Bogotá, Diciembre 5 de 2013

Tablas -SQL Curso Bases de Datos. Por Elizabeth León Guzmán, Ph.D. Profesora Ingeniería de Sistemas Grupo de Investigación MIDAS

Transcripción:

PREVIO 7 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN PLSQL INTRODUCCIÓN El lenguaje que se emplea para programar varía de un Sistema Manejador de Bases de Datos Relacional (RDBMS) a otro, el que utiliza Oracle se llama PLSQL (Procedural LenguajeSQL) y es un lenguaje de programación que se usa para acceder y trabajar con bases de datos en Oracle desde distintos entornos. Cada unidad PLSQL puede contener uno o más bloques que pueden estar anidados. Un bloque PLSQL puede ser anónimo (no tiene nombre) o un subprograma (función o procedimiento, con las características clásicas de éstos). ESTRUCTURA DE UN BLOQUE PLSQL Un bloque anónimo PLSQL está compuesto de tres partes principales. Su estructura básica es la siguiente: Sección Declarativa DECLARE Variables, constantes, excepciones... Sección Ejecutable Órdenes SQL Órdenes PLSQL Sección de excepciones EXCEPTION Acciones que se realizan END;

MANUAL DE PRÁCTICAS DE BASES DE DATOS Sección declarativa (opcional). Contiene las variables, cursores y tipos usados por el bloque. Sólo es necesaria cuando se requiere definir variables en el bloque. Sección ejecutable (obligatoria). Contiene órdenes SQL y órdenes PLSQL para manipular los datos del bloque. Sección de excepciones (opcional). Especifica las acciones a realizar en caso de error o cuando se producen excepciones en la ejecución. Sólo existirá si se van a tratar errores en los bloques. Para ejecutar un bloque PLSQL siempre hay que colocar al final la barra. Pueden añadirse comentarios al código. Estos comentarios pueden ser especificados con: *comentario más comentario * -- comentario de línea USO DE VARIABLES Las variables son zonas de memoria nominadas que permiten almacenar un valor. Pueden utilizarse para pasar valores como argumentos a subprogramas. También podrán utilizarse para almacenar valores devueltos o requeridos por una orden SQL. Las variables se caracterizan por su nombre, compuesto por letras, números y los caracteres $, _ o #. El nombre puede tener hasta un máximo de 30 caracteres y no debe ser una palabra reservada. Todas las variables tienen un tipo, el cual puede ser: Escalar. Almacenan un valor único. Son los mismos que los de las columnas de las tablas (VARCHAR2, NUMBER, DATE, CHAR, LONG, LONG_RAW, BINARY_INTEGER, LAW_INTEGER) además de BOOLEAN y CONSTANT. Las variables BOOLEAN pueden tomar el valor TRUE, FALSE o NULL; las cuales pueden combinarse mediante operadores lógicos (NOT, AND, OR). Las expresiones pueden devolver valores BOOLEANOS utilizando operadores relacionales (<, <=...). Las variables CONSTANT se definen con un valor que es fijo. Compuesto. Hacen referencia a un objeto existente como columna, tabla, cursor, variable o registro. 2 Ing. Luciralia Hernández Hernández

PREVIO 7. LENGUAJE ESTRUCTURADO DE CONSULTA INTRODUCCIÓN A PLSQL (PROCEDIMIENTOS) LOB (Large OBjects). Almacenan gran cantidad de información. Permiten almacenar datos no estructurados (imágenes, texto...) de hasta 4 GB de tamaño. Estos tipos son BFILE, BLOB, CLOB y NCLOB. La declaración de variables se hace mediante la siguiente sintaxis identificador [CONSTANT] tipo de dato [NOT NULL] [:= expresión]; Existen varias formas de asignar valores a las variables utilizando :=, o de forma directa. Sintaxis nombre de variable := expresión; donde la expresión puede ser una constante, una variable o un cálculo usando constantes y variables. Las variables declaradas como NOT NULL siempre deben ser inicializadas. La inicialización puede hacerse utilizando :=, o con la palabra reservada DEFAULT. Si una variable no se inicializa contendrá el valor NULL. Las constantes siempre deben ser inicializadas. Ejemplo DECLARE fecha DATE; depnum NUMBER(2) NOT NULL := 10; ciudad VARCHAR2(10):= Ciudad Real ; KmMilla CONSTANT NUMBER:= 1.4; Se pueden realizar operaciones entre variables y ser almacenadas. Su sintaxis es la siguiente SET campo = campo + varcampo ; Suma lo que hay en campo y varcampo y lo almacena en campo que puede ser una columna de una tabla. Dentro de las variables compuestas esta el atributo %TYPE que permite hacer referencia a una columna de una tabla o una variable que se haya definido anteriormente. Su sintaxis es la siguiente. Ejemplo nombrevariable tabla.columna %TYPE; o vnombre empleado.nombre%type; balance NUMBER; balanceminimo balance%type := 10; Ing. Lucila Patricia Arellano Mendoza 3

MANUAL DE PRÁCTICAS DE BASES DE DATOS Es posible hacer referencia a estructuras completas de tabla o cursor, con el fin de crear variables que tengan la misma estructura, para ello utilizamos %ROWTYPE, su sintaxis es la siguiente: Ejemplo nombrevariable {tabla cursor} %ROWTYPE; varticulo Articulos%ROWTYPE; También podemos utilizar registros que son conjuntos de variables de diferente tipo que están relacionadas entre sí, para ser tratadas como una unidad. Su sintaxis es la siguiente. TYPE tipo_registro IS RECORD( Campo1 tipo1 [NOT NULL] [ :=expr1], Campo2 tipo2 [NOT NULL] [ :=expr2], Campon tipon [NOT NULL] [ :=exprn]); Cada declaración de campo es una declaración de variables. Ejemplo: DECLARE TYPE rcliente IS RECORD( numcli NUMBER(4), nomcli VARCHAR2(30), direccli VARCHAR2(50), codpostcli NUMBER(5)); cliente rcliente; ÓRDENES SQL en PLSQL Las órdenes que se pueden ejecutar dentro de PLSQL son únicamente las del lenguaje de manipulación de datos (SELECT, INSERT, UPDATE, DELETE). Así como sentencias de control de flujo. SELECT La instrucción SELECT almacenará los valores que obtenga en las variables indicadas tras INTO y en el mismo orden. Es obligatorio incluir la cláusula INTO. El comando SELECT debe prepararse para que sólo devuelva una fila. La sintaxis es la siguiente: SELECT lista INTO variable [, variable, variable...] FROM tabla 4 Ing. Luciralia Hernández Hernández

PREVIO 7. LENGUAJE ESTRUCTURADO DE CONSULTA INTRODUCCIÓN A PLSQL (PROCEDIMIENTOS) WHERE condición; Ejemplo Sea la siguiente tabla: AREA NOM SEC ------ ---------- ---- 123 obras A 234 sanidad A 345 transporte B 456 vialidad B 567 salud A SET SERVEROUTPUT ON; DECLARE varea NUMBER(5); vnombre VARCHAR2(20); SELECT ClaveArea, nom INTO varea, vnombre FROM area WHERE sec='c'; DBMS_OUTPUT.PUT_LINE('area ' varea); DBMS_OUTPUT.PUT_LINE('nombre ' vnombre); END; En los siguientes comandos la sintaxis no varía, se utiliza la que se explico en el previo 2. INSERT INSERT INTO tabla VALUES(...); UPDATE UPDATE tabla SET valor = expresión WHERE condición; DELETE DELETE FROM tabla WHERE condición; Ing. Lucila Patricia Arellano Mendoza 5

MANUAL DE PRÁCTICAS DE BASES DE DATOS ÓRDENES PLSQL Dentro de PLSQL se puede hacer uso de funciones numéricas, de carácter, de fecha, de conversión de tipos de datos, excepto las de agrupamiento (ya que éstas se aplican sobre una columna de una tabla). Ver apéndice. Los operadores en PLSQL son los mismos que para SQL: aritméticos, lógicos, concatenación, y paréntesis. Además, existe el operador exponencial (**). También se utilizan estructuras de control, estas permiten elegir la forma en la que se van a ejecutar las diferentes instrucciones dentro del programa. Las más importantes son las estructuras condicionales y los ciclos. Estructuras condicionales Las estructuras condicionales se utilizan para la realización de acciones dependiendo del cumplimiento o no de determinadas condiciones. Las estructuras de condicionales más comunes son IF-THEN, IF-THEN-ELSE, IF-THEN-ELSIF y CASE. Sentencia IF-THEN Es la estructura condicional en la que se ejecuta una secuencia de instrucciones si la condición es cierta. Su sintaxis es la siguiente: IF condición THEN Secuencia_de_instrucciones END IF; Sentencia IF-THEN-ELSE Es la estructura condicional en la que se ejecuta una primera secuencia de instrucciones si la condición es cierta, y se ejecuta una segunda secuencia de instrucciones si la condición es falsa. Su sintaxis es la siguiente: IF condición THEN Secuencia_de_instrucciones1 ELSE Secuencia_de_instrucciones2 END IF; Sentencia IF-THEN-ELSIF Estructura condicional que se utiliza para seleccionar una acción entre varias alternativas mutuamente excluyentes. Si la primera condición es falsa o nula, se pasar a preguntar por la 6 Ing. Luciralia Hernández Hernández

PREVIO 7. LENGUAJE ESTRUCTURADO DE CONSULTA INTRODUCCIÓN A PLSQL (PROCEDIMIENTOS) siguiente condición de la cláusula ELSIF comenzando una nueva estructura IF-THEN-ELSE. Su sintaxis es la siguiente: IF condición THEN Secuencia_de_instrucciones1 ELSIF condición2 THEN Secuencia_de_instrucciones2 ELSE Secuencia_de_instrucciones3 END IF; Los operadores utilizados en las condiciones son los mismos que en SQL: =, >, <,, >=,<=,IS NULL, IS NOT NULL, BETWEN, LIKE, AND, OR, etc. Sentencia CASE Al igual que IF, la sentencia CASE selecciona una secuencia de sentencias a ejecutar, pero a diferencia del IF se utiliza un selector y no una expresión booleana. Su sintaxis es la siguiente: CASE selector WHEN expresión1 THEN secuencia_de_instrucciones1; WHEN expresión2 THEN secuencia_de_instrucciones2; WHEN expresiónn THEN secuencia_de_instruccionesn; [ELSE secuencia_de_instrucciones N+1]; END CASE; La condición ELSE es opcional y sólo se aplica si ninguna de las condiciones WHEN anteriores se ejecuta. Procesamientos repetitivos Son conjuntos de instrucciones que se utilizan para ejecutar órdenes de forma repetida. Los más comunes son LOOP, WHILE y FOR. Sentencia LOOP PLSQL permite llevar a cabo operaciones repetitivas mediante la instrucción LOOP. Utilizada sola, la instrucción LOOP inicia ciclos sin fin. Su sintaxis es la siguiente: [<etiqueta>] LOOP instrucciones; [EXIT etiqueta WHEN condición] END LOOP [etiqueta]; Para poder salir de un ciclo con LOOP se realiza mediante el comando Ing. Lucila Patricia Arellano Mendoza 7

MANUAL DE PRÁCTICAS DE BASES DE DATOS EXIT etiqueta WHEN condición Donde etiqueta es el nombre del ciclo y condición es la que se debe cumplir para poder salir del ciclo. Sentencia FOR El ciclo FOR permite ejecutar las instrucciones específicas dentro del bucle haciendo variar un índice. Las instrucciones se ejecutan tantas veces como cambia el valor del índice. Su sintaxis es la siguiente: FOR índice IN [REVERSE] min..max LOOP instrucciones; END LOOP; Donde el índice se declara de forma implícita. min, max son constantes, expresiones o variables. El comando REVERSE, es opcional y decrementa el valor entre min y max. Sentencia WHILE Un ciclo WHILE se realiza solamente si la condición es verdadera. Su sintaxis es la siguiente [<etiqueta>] WHILE condicion LOOP instrucciones;... END LOOP [<etiqueta>]; Donde la condición es una combinación de expresiones relacionadas mediante operadores: <,>,=,!=,AND,OR,LIKE, Para ejecutar un bloque de órdenes PLSQL se utiliza el comando COMMIT Para presentar la salida de la ejecución de los bloques en pantalla se utiliza el paquete DBMS_OUTPUT, la sintaxis adecuada es la siguiente. DBMS_OUTPUT.PUT_LINE( Mensaje variable); Es necesario utilizar SET SERVEROUTPUT ON para habilitar las salidas por pantalla Ejemplo SET SERVEROUTPUT ON; DBMS_OUTPUT.PUT_LINE( El nombre del usuario es : nombre); 8 Ing. Luciralia Hernández Hernández

PREVIO 7. LENGUAJE ESTRUCTURADO DE CONSULTA INTRODUCCIÓN A PLSQL (PROCEDIMIENTOS) Hasta ahora se han definido bloques anónimos que se compilan cada vez que son ejecutados y que no se almacenan en la base de datos. Si deseamos que estos bloques sean guardados en la base de datos, entonces utilizamos procedimientos almacenados (stored procedure). Un procedimiento almacenado es un conjunto de comandos de SQL que pueden ser compilados y almacenados en el servidor. Una vez realizado esto, los clientes no necesitan volver a teclear todas las instrucciones sino únicamente hacer referencia al procedimiento. Esto mejora el rendimiento del servidor, ya que la instrucción de SQL solamente es revisada una sola vez y menos información debe ser enviada entre el cliente y el servidor. Los procedimientos son llamados también subprogramas. Para crear un procedimiento se utiliza la siguiente sintaxis: CREATE [OR REPLACE] PROCEDURE nombreprocedimiento ( argumento [IN OUT IN OUT] <tipo> [, argumento [IN OUT IN OUT] <tipo>, ] {AS} <codigo del procedimiento> [EXCEPTION] END nombreprocedimiento; La cláusula OR REPLACE se utiliza para crear un procedimiento que ya existe. Los argumentos pueden tener los modos: IN OUT IN OUT variable de entrada variable de salida variable de entradasalida El cuerpo de un procedimiento es un bloque PLSQL con sus secciones declarativa, ejecutable y de manejo de excepciones. La declarativa se sitúa entre las palabras claves AS y la palabra clave, la ejecutable entre y la palabra EXCEPTION y la de excepciones entre EXCEPTION y END. (No existe la palabra clave DECLARE en un procedimiento y su lugar lo ocupan AS.) Se debe incluir el nombre del procedimiento después de la orden END que cierra la declaración. Los parámetros de un procedimiento pueden tener valores predeterminados que se declaran mediante la siguiente sintaxis. Nombre argumento [modo] <tipo>{:= DEFAULT}valor inicial Un procedimiento puede ejecutarse con el siguiente comando: Ing. Lucila Patricia Arellano Mendoza 9

MANUAL DE PRÁCTICAS DE BASES DE DATOS EXEC <nombredelprocedimiento> (parámetros) Para borrar un procedimiento: DROP PROCEDURE <nombre del procedimiento> SECUENCIAS Dentro de los procedimientos podemos utilizar secuencias que son objetos que generan una serie de números únicos y se utilizan frecuentemente para tablas que usan columnas como llaves. Cuando en una aplicación se inserta una nueva fila en una tabla, la aplicación solicita una secuencia a la base de datos para proporcionar el siguiente valor disponible en la secuencia para el valor de la clave principal de la nueva fila. Su sintaxis es la siguiente: CREATE SECUENCE <nombre secuencia> [ {INCREMENT BY START WITH]} entero {MAXVALUE integer NOMAXVALUE} {MINVALUE integer NOMINVALUE} {CYCLE NOCYCLE} {CACHE integer NOCACHE} {ORDER NOORDER} } ] ; INCREMENT BY indica la amplitud de la secuencia. START WITH indica el número con que comienza la secuencia. MINVALUE y MAXVALUE son los números más alto y más bajo que genera la secuencia. Para reanudar una secuencia donde comenzó se utiliza CYCLE. CACHE permite guardar en memoria un conjunto preasignado de números de secuencia. ORDER asigna los números de secuencia en orden de peticiones. Ejemplos 1. Para ejecutar los siguientes ejemplos es necesario generar la tabla area e insertar los datos: CREATE TABLE area( clavearea NUMBER(5) NOT NULL, Nom VARCHAR2(20), sec CHAR(1), CONSTRAINT area_pk PRIMARY KEY (clavearea), CONSTRAINT tipo_sec CHECK(sec IN('A','B','C'))); 10 Ing. Luciralia Hernández Hernández

PREVIO 7. LENGUAJE ESTRUCTURADO DE CONSULTA INTRODUCCIÓN A PLSQL (PROCEDIMIENTOS) Con los siguientes datos: clavearea nom sec 123 Obras A 234 Sanidad A 345 Transporte A 456 Vialidad B 567 Salud C Una vez realizado esto activamos la salida en pantalla. SET SERVEROUTPUT ON; A continuación se presentan dos formas de creación de procedimientos: Para dar de alta un área pasándole los parámetros desde otro bloque PLSQL, realice lo siguiente: CREATE OR REPLACE PROCEDURE altaarea(c_area IN NUMBER, nom IN VARCHAR, sec IN CHAR) AS INSERT INTO area VALUES(c_area,nom,sec); COMMIT; DBMS_OUTPUT.PUT_LINE('Área creada: ' nom); END altaarea; Para poderlo ejecutar, empleamos EXEC altaarea(235, Mecatronica, A ); Con lo que obtenemos la siguiente salida Área creada: Mecatronica Otra forma de crear este procedimiento sería utilizando %TYPE. CREATE OR REPLACE PROCEDURE altanuevaarea( v_area area.clavearea%type, v_nom area.nom%type, Ing. Lucila Patricia Arellano Mendoza 11

MANUAL DE PRÁCTICAS DE BASES DE DATOS v_sec area.sec%type ) AS --Inserta una nueva fila en la tabla área INSERT INTO area (clavearea,nom,sec) VALUES (v_area,v_nom,v_sec); COMMIT; END altanuevaarea; Para proporcionar los parámetros al procedimiento anterior realizamos o bien altanuevaarea (132, 'Transferencia', 'A'); END; EXEC altanuevaarea(232,'contratación','b'); 2. Para eliminar o dar de baja un área realizamos los siguiente CREATE OR REPLACE PROCEDURE bajaarea(v_area IN NUMBER) AS DELETE FROM area WHERE clavearea=v_area; COMMIT; DBMS_OUTPUT.PUT_LINE('Baja de Área'); END bajaarea; Para ejecutarlo EXEC bajaarea(123); Obteniéndose como salida Baja de Área 12 Ing. Luciralia Hernández Hernández

3. Para modificar el nombre de un área se realiza lo siguiente PREVIO 7. LENGUAJE ESTRUCTURADO DE CONSULTA INTRODUCCIÓN A PLSQL (PROCEDIMIENTOS) CREATE OR REPLACE PROCEDURE cambiaarea(varea IN NUMBER,vnom IN VARCHAR2) AS UPDATE area SET nom=vnom WHERE clavearea=varea; COMMIT; DBMS_OUTPUT.PUT_LINE('Área modificada: ' vnom); END cambiaarea; Ejecutando el procedimiento EXEC cambiaarea(234,'ciencias'); Se obtiene como salida Área modificada: Ciencias 4. En el caso de que se necesite cambiar el nombre de una área, de modo de que si no existiera se cree un nuevo registro, para ello es necesario primero generar una secuencia para darle un número secuencial a la clave de área.(considerando que la clave de área es de tipo númerico). CREATE SEQUENCE secuencial START WITH 100 INCREMENT BY 1; Ahora se puede asignar el número de secuencia a la columna clavearea de la tabla área de la siguiente forma: DECLARE VAREA number(5):=121; vnom VARCHAR2(15):='Civil'; vsec CHAR(1):='B'; UPDATE area SET nom=vnom WHERE clavearea=varea; IF SQL%NOTFOUND THEN INSERT INTO are(clavearea,nom,sec) VALUES(secuencial.NEXTVAL,vnom,vsec); END IF; END; Recuerde, si el área 125 no existe se genera una nueva con número 100. Muestre los datos para que observe el resultado. Ing. Lucila Patricia Arellano Mendoza 13

MANUAL DE PRÁCTICAS DE BASES DE DATOS 5. Ahora, sea la siguiente definición de tabla salario: CREATE TABLE salarios ( empleo CHAR(20) NOT NULL PRIMARY KEY, salario NUMBER(5) ); Agregue los siguientes datos al esquema anterior, utilizando un procedimiento almacenado, muestre la tabla y después realice lo siguiente: empleo salario Capturista 5000 Secretaria 3000 Administrador 6000 Gerente 10000 Este procedimiento actualiza el valor del salario de los empleados que son capturistas según el factor proporcionado. CREATE OR REPLACE PROCEDURE ajustesalario( factor IN NUMBER) AS UPDATE salarios SET salario=salario*factor WHERE empleo= capturista ; COMMIT; END ajustesalario; Ejecútelo utilizando EXEC ajustesalario(1.4); 14 Ing. Luciralia Hernández Hernández