Вы находитесь на странице: 1из 29

UNIVERSIDAD JUAREZ AUTONOMA DE TABASCO

Materia: Programacin en base de Datos

Investigacin de Base de Datos


Profesor Gilberto Murillo Gonzlez Alumna: Yesenia Janett Pech Canto
Cunduacn, Tabasco 30 de septiembre del 2013

Que es un manejador de base de datos.


El sistema manejador de bases de datos es la porcin ms importante del software de un sistema de base de datos. Un DBMS es una coleccin de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de alguna tarea especfica. Caracteristicas.

Un sistema de base de datos tiene naturaleza auto descriptiva (meta datos). Aislamiento entre programas y datos (Abstraccin de datos). Soporte de mltiples vistas de los datos. Capacidad para compartir los datos Procesamiento de las transacciones multiusuario

Ventajas y desventajas.
Ventajas: Independencia de datos y tratamiento. Coherencia de resultados. Mejora en la disponibilidad de datos Cumplimiento de ciertas normas. Restricciones de seguridad. Accesos (Usuarios a datos). Operaciones (Operaciones sobre datos).

Desventajas: El mal uso. Manejabilidad de la consola. Tiempo de respuesta relativamente largo. Poco eficaz, es limitado.

Cul es el motor de entorno de SMDB


El Motor de entorno de SMDB - Realiza las operaciones requeridas sobre la base de datos, tpicamente representndolo a alto nivel. Mecanismo de almacenamiento - Traduce las operaciones a lenguaje de bajo nivel para acceder a los datos. En algunas arquitecturas el mecanismo de almacenamiento est integrado en el motor de la base de datos.

Motor de transacciones - Para conseguir correccin y fiabilidad la mayora de las operaciones internas del SMBD se realizan encapsuladas dentro de transacciones. Las transacciones pueden ser especificadas externamente al SMBD para encapsular un grupo de operaciones. El motor de transacciones sigue la ejecucin de las transacciones y gestiona su ejecucin de acuerdo con las reglas que tiene establecidas (p.e. control de concurrencia y su ejecucin o cancelacin). Gestin y operacin de SMBD - Comprende muchos otros componentes que tratan de aspectos de gestin y operativos del SGBD como monitoreo de prestaciones, gestin del almacenamiento, mapas de almacenamiento

Que es DDL y DML


DDL y DML Lenguaje de definicin de datos (DDL: Data Definition Language) Sencillo lenguaje artificial para definir y describir los objetos de la base de datos, su estructura, relaciones y restricciones. En la prctica puede consistir en un subconjunto de instrucciones de otro lenguaje informtico. Aparte suele poseer dos subconjuntos de instrucciones:

Lenguaje de definicin del almacenamiento de los datos (DSDL: Data Storage Definition Language): permite especificar caractersticas fsicas de la base de datos (volmenes y archivos donde van a ser almacenados los datos, etc). Lenguaje de control de datos (DCL: Data Control Language): encargado del control y seguridad de los datos (privilegios y modos de acceso, etc).

Lenguaje de manipulacin de datos (DML: Data Manipulation Language): Lenguaje artificial de cierta complejidad que permite el manejo y procesamiento del contenido de la base de datos. En la prctica puede consistir en un subconjunto de instrucciones de otro lenguaje informtico. Las aplicaciones que trabajan sobre la base de datos se programan en un lenguaje de programacin (C, Cobol) insertando en el cdigo fuente sentencias del DML. Al utilizar un DML se deben especificar los datos que sern afectados por las sentencias del lenguaje. Un DML puede tener o no procedimientos, segn sea necesario especificar adems cmo deben obtenerse esos datos. Los DML con procedimientos tienen sentencias de control de flujo como bucles o condicionales. Los DML sin procedimientos son conocidos tambin como declarativos.

Tipos de datos existentes en orale


Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos. Alfanumricos Numricos Fecha Binarios Otros CHAR NUMBER DATE RAW ROWID VARCHAR2 FLOAT LONGRAW VARCHAR BLOB NCHAR CLOB NVARCHAR2 NLOB LONG (Obs.) BFILE Los valores alfanumricos van encerrados entre comilla simple: 'Alfanumrico' Los valores numricos son nmero simples: 123 Las fechas van encerradas entre comillas simples: '11/11/2011' Los valores binarios no pueden ser representados (son fotos, vdeos) Tipo de dato CHAR(b) Almacena cadenas de caracteres de longitud fija, desde 1 a 2.000 bytes de ocupacin. El nmero de caracteres que se pueden almacenar se rige segn la siguiente frmula. n caracteres = bytes / character set Para ASCII, el conjunto de caracteres ocupa un byte, por lo que coincide el nmero de caracteres mximos con la ocupacin del tipo de dato. Si se introduce un valor de 10 caracteres en un campo de CHAR(100), se tendr que rellenar con 90 posiciones restantes. As la siguiente expresin es cierta: 'Hola Andrea' = 'Hola Andrea ' Si se intenta introducir un valor demasiado grande para el campo, se intentar eliminar los espacios finales, y si cabe sin espacios, se introduce. Si an as no cabe, se retorna un error. Tipo de dato VARCHAR2(b) Almacena cadenas de caracteres de longitud variable. Si se define una columna de longitud 100 bytes, y se introduce en ella un valor de 10 bytes, la columna ocupar 10 y no 100 como haca con el tipo de dato CHAR. Tipo de dato VARCHAR(b) En Oracle es equivalente a VARCHAR2, en futuras versiones permitir distintos criterios de comparacin. Tipo de dato NCHAR(b) Almacena un valor alfanumrico de longitud fija con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE. Tipo de dato NVARCHAR2(b)

Almacena un valor alfanumrico de longitud variable con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE. Tipo de dato NUMBER(p,s) Almacena valores numricos en punto flotante que pueden ir desde 1.0 x 10-130 hasta 9.9(38 nueves) 9 x 10125 . El almacenamiento interno de los valores numricos en notacin cientfica: Mantisa x 10exponente La mantisa puede contener cualquier nmero, entero o decimal, positivo o negativo. El exponente podr contener cualquier nmero entero, positivo o negativo. El parmetro p indica la precisin (nmero de dgitos contando los decimales) que contendr el nmero como mximo. Oracle garantiza los datos con precisiones de 1 a 38. El parmetro s indica la escala, esto es, el mximo de dgitos decimales. Hay que tener en cuenta que una columna definida NUMBER(10,5), podr contener como mximo cualquier nmero siempre y cuando el nmero de dgitos enteros ms el nmero de dgitos decimales no supere 10 (y no 15). La escala puede ir de -84 a 127. Para definir nmero enteros, se puede omitir el parmetro s o bien poner un 0 en su lugar. Se puede especificar una escala negativa, esto lo que hace es redondear el nmero indicado a las posiciones indicadas en la escala. Por ejemplo un nmero definido como NUMBER(5,-2), redondear siempre a centenas. As si intentamos introducir el valor 1355, en realidad se almacenar 1400. Tipo de dato FLOAT(b) Almacena un nmero en punto decimal sin restriccin de dgitos decimales. El parmetro b indica la precisin binaria mxima que puede moverse en el rango 1 a 126. Si se omite el defecto ser 126. Una columna FLOAT(126) es equivalente a una columna NUMBER(38), aunque la diferencia est en que la columna NUMBER no podr contener decimales y la columna FLOAT si y con cualquier escala. Tipo de dato DATE Almacena un valor de fecha y hora. Para un tipo de dato DATE, Oracle almacena internamente los siguiente datos:

Siglo Ao Mes Da Hora Minuto Segundo

El formato por defecto de las fechas es: 'DD-MON-YYYY' Esto es: Dos dgitos para el da Las tres primeras siglas del mes (depende del idioma instalado). Cuatro dgitos para el ao.

Por ejemplo: '11-NOV-2011' '12-APR-1999' Este formato puede ser alterado en cualquier momento. Internamente una fecha se almacena como el nmero de das desde cierto punto de inicio (por ejemplo el ao 0). Esto permite que las fechas puedan ser tratadas en operaciones aritmticas normales:

'11-NOV-2011' + 10 = '21-NOV-2011' '12-APR-1999' - 1 = '11-APR-1999' '24-APR-1992' - '1-APR-1992' = 23

Tipos de datos binarios Permiten almacenar informacin en formato crudo, valores binarios tal y como se almacenan en el disco duro o como residen en memoria. Estas columnas se pueden utilizar tanto para almacenar grandes cantidades de datos (hasta 4Gb.), como para almacenar directamente cualquier tipo de fichero (ejecutables, sonidos, vdeos, fotos, documentos Word, DLLs) o para transportar datos de una base de datos a otra, ya que el formato binario es el nico formato comn entre cualquier sistema informtico. Tipo de dato LONG (Obsoleto) Almacena caracteres de longitud variable hasta 2 Gb. Este tipo de dato se soporta para compatibilidad con versiones anteriores. En Oracle y siguientes versiones se debe usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades de datos alfanumricos. Tipo de dato ROWID Representa una direccin de la base de datos, ocupada por una nica fila. El ROWID de una fila es un identificador nico para una fila dentro de una base de datos. No hay dos filas con el mismo ROWID. Este tipo de dato sirve para guardar punteros a filas concretas.

Que es un tablespace y su sintaxis


Tablespaces Los TABLESPACES en oracle son las bases de datos propiamente dichas, dentro de ellas, se alojaran las tablas con sus datos, vistas, etc.. La expresin para Crear un nuevo Tablespace o Base de datos es la siguiente: CREATE TABLESPACE nombredb DATAFILE G:\ORACLEXE\ORADATA\ nombredb.mdf SIZE xxM AUTOEXTEND ON NEXT xxK o xxM

Sintaxis: CREATE TABLESPACE ordena la creacin de un nuevo Tablespace que tendr como nombre nombredb . DATAFILE indica la ruta donde se ubicara fsicamente el archivo dentro del disco duro G:\ORACLEXE\ORADATA\y el nombre del mismo con su extensin nombredb.mdf. Atencin con las comillas simples que enmarcan la ruta G:\ORA... y no se nos pueden olvidar. SIZE indica el tamao inicial que tendr el archivo en el disco duro y puede estar expresado en M para Mb o en K para Kb Sobra decir que xx seria el tamao que le indicamos AUTOEXTEND ON NEXT xxK o xxM indica que queremos que el archivo de la base de datos se vaya ampliando en xxK o xxM cada ves que haga falta, si no lo indicamos, nuestra tabla quedara limitada al tamao del archivo definido con SIZE xxM . Ahora vamos a crear un TABLESPACE nuevo en ORACLE utilizando los comandos SQL, lo llamaremos borramedb, tendr un tamao inicial de 10 Megas y debe ser autoextensible. Tambin tendremos que poder borrarla, para esto esta DROP TABLESPACE nuevadb Sintaxis: DROP TABLESPACE nuevadb nos indica que eliminaremos la base de datos nuevadb . si el TABLESPACE tuviera tablas dentro, deberiamos agregar algo mas de tal modo que .. DROP TABLESPACE nuevadb INCLUDING CONTENTS Bien, ahora, un tablespace necesitar de algn usuario que se encargue de el. Para crear un nuevo usuario se usa la siguiente sentencia: CREATE USER nvo

IDENTIFIED BY nvo DEFAULT TABLESPACE nuevadb TEMPORARY TABLESPACE temp Sintaxis: CREATE USER nvo indica que se cree un nuevo usuario y su nombre nvo . IDENTIFIED BY nvo asigna al nuevo usuario una contrasea nvo <<que NUNCA debe ser como la del ejemplo !!!, solo usamos contraseas as para los ejemplos. DEFAULT TABLESPACE nuevadb indica que su TABLESPACE ser nuevadb . TEMPORARY TABLESPACE temp y aqui le designamos el espacio temporal, si no incluimos esta parte en la sentencia, Oracle le asignar el TEMP por defecto Permisos de usuario Los permisos generales que podemos asignarle a los usuarios son: CONECT: le permite conectarse a la base de datos RESOURCE: DBA: Administrador Asignar permisos a usuario GRANT CONECT o RESOURCE o DBA TO usuario Quitar permisos a usuario REVOKE permiso FROM usuario Eliminar Usuario Creo que esto eliminara tambin su Tablespace (tengo que probar). DROP USERS usuario

Que es un usuario y la sintaxis para crear usuarios


Create User Esta sentencia sirve para crear un usuario oracle.

Un usuario es un nombre de acceso a la base de datos oracle. Normalmente va asociado a una clave (password). Lo que puede hacer un usuario una vez ha accedido a la base de datos depende de los permisos que tenga asignados ya sea directamente (GRANT) como sobre algun rol que tenga asignado (CREATE ROLE). El perfil que tenga asignado influye en los recursos del sistema de los que dispone un usuario a la hora de ejecutar oracle (CREATE PROFILE). La sintaxis es: CREATE USER username IDENTIFIED {BY password | EXTERNALLY | GLOBALLY AS 'external_name'} options; Donde options: DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace QUOTA int {K | M} ON tablespace QUOTA UNLIMITED ON tablespace PROFILE profile_name PASSWORD EXPIRE ACCOUNT {LOCK|UNLOCK} Crea un usuario sin derecho a guardar datos o crear objetos: CREATE USER usuariolimitado IDENTIFIED BY miclavesecreta; Crea un usuario con todos los derechos para guardar datos o crear objetos: DROP USER miusuario CASCADE; CREATE USER miusuario IDENTIFIED BY miclavesecreta DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON data; CREATE ROLE programador; GRANT CREATE session, CREATE table, CREATE view, CREATE procedure,CREATE synonym, ALTER table, ALTER view, ALTER procedure,ALTER synonym, DROP table, DROP view, DROP procedure,DROP synonym, TO conn; GRANT programador TO miusuario;

Es necesario crear el usuario antes de asignar permisos con GRANT o un ROLE por defecto.

Sintaxis para crear base de datos


Sintaxis de CREATE DATABASE CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name CREATE DATABASE crea una base de datos con el nombre dado. Para usar CREATE DATABASE, necesita el permiso CREATE en la base de datos. Las reglas para nombres de bases de datos permitidos se dan en Seccin 9.2, Nombres de bases de datos, tablas, ndices, columnas y alias. Ocurre un error si la base de datos existe y no especifica IF NOT EXISTS. En MySQL 5.0, las opciones create_specification pueden darse para especificar caracterstica de la base de datos. Las caractersticas se almacenan en el fichero db.opt en el directorio de la base de datos. La clusula CHARACTER SET especifica el conjunto de caracteres por defecto de la base de datos. La clusula COLLATE especifica la colacin por defecto de la base de datos. Los nombres de colacin y de conjunto de caracteres se discuten en Captulo 10, Soporte de conjuntos de caracteres. Las bases de datos en MySQL se implementan como directorios que contienen ficheros que se corresponden a tablas en la base de datos. Como no hay tablas en la base de datos cuando se crean inicialmente, el comando CREATE DATABASE en MySQL 5.0 crea slo un directorio bajo el directorio de datos de MySQL y el fichero db.opt file. Si crea manualmente un directorio bajo el directorio de datos (por ejemplo, con mkdir), el servidor lo considera como un directorio de base de datos y muestra la salida de SHOW DATABASES. CREATE SCHEMA puede usarse desde MySQL 5.0.2. Tambin puede usar el programa mysqladmin para crear bases de datos. Consulte Seccin 8.4, Administrar un servidor MySQL con mysqladmin.

Sintaxis para crear tablas Create Table Las tablas son la estructura bsica donde se almacena la informacin en la base de datos. Dado que en la mayora de los casos, no hay forma de que el proveedor de base de datos sepa con antelacin cules son sus necesidades de almacenamiento de datos, es probable que necesite crear tablas en la base de datos usted mismo. Muchas herramientas de base de datos le permiten crear tablas sin ingresar SQL, pero debido a que las tablas son los contenedores de toda la informacin, es importante incluir la sintaxis CREATE TABLE en esta gua de referencia. Antes de sumergirnos en la sintaxis SQL para CREATE TABLE, es una buena idea comprender lo que se incluye en una tabla. Las tablas se dividen en filas y columnas. Cada fila representa una parte de los datos, y cada columna puede pensarse como la representacin de un componente de aquella parte de los datos. Entonces, por ejemplo, si tenemos una tabla para registrar la informacin del cliente, las columnas pueden incluir informacin tal como Primer Nombre, Apellido, Direccin, Ciudad, Pas, Fecha de Nacimiento y dems. Como resultado, cuando especificamos una tabla, incluimos los ttulos de columna y los tipos de datos para esta columna en particular. Entonces Qu son los tipos de datos? Generalmente, los datos se generan en formas variadas. Podra ser un entero (tal como 1), un nmero real (tal como 0,55), una lnea (tal como 'sql'), una fecha/expresin de tiempo (tal como '25-ene2000 03:22:22'), o incluso en formato binario. Cuando especificamos una tabla, necesitamos especificar el tipo de dato asociado con cada columna (es decir, especificaremos que First_Name es de char(50) tipo lo que significa que es una lnea con 50 caracteres). Una cosa a tener en cuenta es que las diferentes bases de datos relacionales permiten diferentes tipos de datos, entonces es prudente consultar primero una referencia especfica de base de datos. La sintaxis SQL para CREATE TABLE es CREATE TABLE "nombre_tabla" ("columna 1" "tipo_de_datos_para_columna_1", "columna 2" "tipo_de_datos_para_columna_2", ... ); Entonces, si debemos crear una tabla para el cliente tal como se especifica anteriormente, ingresaramos CREATE TABLE Customer (First_Name char(50),

Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date datetime); A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor predeterminado, agregue [valor] Predeterminado luego de la instruccin de tipo de datos. En el ejemplo anterior, si deseamos predeterminar una columna Address como Desconocida y Ciudad como Barcelona, ingresaramos CREATE TABLE Customer (First_Name char(50), Last_Name char(50), Address char(50) default 'Unknown', City char(50) default 'Barcelona', Country char(25), Birth_Date datetime); Tambin puede limitar el tipo de informacin que una tabla /columna puede mantener. Esto se realiza a travs de la palabra clave CONSTRAINT, que se describe a continuacin.

Roles y privilegios de usuarios


Usuarios roles y permisos Un punto crtico en los gestores de contenidos es el de los permisos y es importante disponer de algun mecanismo que permita establecer que operaciones podr realizar cada usuario. El objetivo es evitar que, por accidente o de forma intencionada, un usuario pueda realizar operaciones que comprometan la integridad y funcionamiento del sitio web. Para este fin, Drupal utiliza un sistema de roles, permisos y usuarios. Entendemos por usuario a cualquier persona que accede al sitio web. Los usuarios se pueden agrupar en roles en funcin de las operaciones que se les permite realizar. Es decir, que cada rol se caracteriza por disponer de una serie concreta de permisos. Se entiende por permiso la posibilidad de ejecutar determinadas operaciones o no sobre los diferentes elementos del CMS. En Drupal los roles se pueden gestionar (crear, destruir o modificar) en "Administer>User managment>Roles". Para gestionar los permisos asociados a

cada Rol deberemos ir a "Administer>User managment>Permisions". Luego para especificar que tareas se permitirn a cada usuario, bastar con asignarle un Rol a cada uno de ellos. Se pueden crear los roles que se quiera, con los permisos que se crean convenientes, pero por lo general se suelen definir los siguientes: - Visitante: usuario que simplemente podr leer o buscar en los contenidos y no necesita autentificarse. Para este tipo de usuarios se puede usar el rol anonymous user que viene por defecto con Drupal. - Usuario autentificado: se le permite dejar comentarios u opinar sobre los productos o simplemente participar generando algn tipo de contenido. Para este tipo de usuario se puede utilizar el rol authenticated user. - Editor: gestiona a los usuarios y todos los contenidos y no tiene porque tener nociones tcnicas del funcionamento del sistema. Puede ser p.ej. el propietario de una tienda virtual o de una comunidad virtual, el cual no tiene conociemientos tcnicos de la plataforma pero debe disponer de control total sobre los contenidos del sitio. - Administrador: es el responsable tcnico y puede acceder a cualquiera de los aspectos del sistema, configurando o modificando cualquier parmetro de ste. Este usuario tiene control total sobre el sitio web, por lo que puede realizar cualquier operacin de configuracin o mantenimiento sobre este. Un punto que a los recin iniciados puede causar confusin es el del usuario de la base de datos y los usuarios del sitio web. Como se explica en el apartado de instalacin, antes de poner en marcha un sitio web, debemos crear una base de datos y un usuario con todos los permisos sobre esta. Al iniciar la instalacin de Drupal, este nos pedir el usuario y password de la base de datos, es decir el nombre del usuario que tiene permisos totales sobre esa base de datos y su password. Este usuario y password nicamente sern utilizados por Drupal para acceder y guardar el valor de las diferentes variables en la base de datos. Al prinicpio del todo de la instalacin, una vez le hemos indicado a Drupal como acceder a la base de datos, nos pedir que configuremos el usuario con permisos totales sobre el sitio web. Este usuario no tiene nada que ver con el de la base de datos, y puede ser el que queramos. De hecho el motor de Drupal guardar est informacin en la tabla users de la base de datos ( en el campo name guardar el nombre, y en pass el password encriptado con un hash MD5 ), mientras que el usuario y password de la bbdd lo guardar en unos ficheros de su instalacin. Es importante que el acceso a las carpetas de estos ficheros tengan los permisos correctamente configurados. As en resumen, ha de quedar claro que una cosa es el usuario de la base de datos y otra los usuarios del sitio web.

Bibliografa Pgina web


http://www.tuinformaticafacil.com/oracle-11g/tipos-de-datos-en-oracle-11g http://www.techonthenet.com/oracle/datatypes.php

Libros

Introduccin a las bases de Datos Relacionales - Mendelzon - Ale Sistemas de Bases de Datos - Elmasri - Navathe

INSERT INTO CLIENTES (codigo,nombre,telefono,fecha) VALUES (codigo_cliente.NEXTVAL,'CASA AUGE DEPORTES', '598768',TO_DATE('15/04/95','DD/MM/YY'));

INSERT INTO CLIENTES(codigo,nombre,telefono,fecha) VALUES (codigo_cliente.NEXTVAL, 'EMPRESA D','598768',TO_DATE('15/04/95','DD/MM/YY') );

CREATE TABLE clientes ( codigo integer NOT NULL PRIMARY KEY, fecha date NOT NULL, nombre char(30) NOT NULL, telefono char(20) NOT NULL, direccion char(100), anotacion LONG );

CREATE TABLE ventas ( codigo INTEGER NOT NULL REFERENCES clientes(codigo), fecha DATE NOT NULL, articulo CHAR(20) NOT NULL, valor NUMBER(10,2) NOT NULL CHECK (valor>0) );

CREATE TABLE clientes (codigo INTEGER NOT NULL, nombre CHAR(30) NOT NULL, direccion CHAR(100), anotacion LONG, PRIMARY KEY (codigo)); CREATE TABLE ventas (codigo INTEGER NOT NULL, fecha DATE NOT NULL, articulo CHAR(10), valor NUMBER(6,2) NOT NULL CHECK (valor>0), FOREIGN KEY (codigo) REFERENCES clientes(codigo));

CREATE SEQUENCE codigo_cliente INCREMENT BY 1 START WITH 1;

INSERT INTO CLIENTES (codigo,nombre,telefono,fecha) VALUES (codigo_cliente.NEXTVAL,'CASA AUGE DEPORTES', '598768',TO_DATE('15/04/95','DD/MM/YY'));

INSERT INTO CLIENTES(codigo,nombre,telefono,fecha) VALUES (codigo_cliente.NEXTVAL,'pinturerias propios', '456789',TO_DATE('10/04/95','DD/MM/YY'));

SELECT user,sysdate,CODIGO_CLIENTE.currval FROM DUAL;

create tablespace moda DATAFILE 'C:\PROGRAMACION DE BASE\moda_TAB.DAT' SIZE 1000M DEFAULT STORAGE(INITIAL 100K NEXT 100K) ONLINE PERMANENT;

CREATE OR REPLACE PROCEDURE change_emp_dept(emp_id IN NUMBER, dept_id IN NUMBER) AS emp_row employees%ROWTYPE; dept departments.department_name%TYPE; rec_count number := 0; BEGIN SELECT count(*) INTO rec_count FROM employees WHERE employee_id = emp_id; IF rec_count = 1 THEN SELECT * INTO emp_row FROM employees WHERE employee_id = emp_id; IF emp_row.department_id != dept_id THEN emp_row.department_id := dept_id; UPDATE employees SET ROW = emp_row WHERE employee_id = emp_id; SELECT department_name INTO dept from departments WHERE department_id = dept_id; DBMS_OUTPUT.PUT_LINE('The employee ' || emp_row.first_name || ' ' || emp_row.last_name || ' is now in department: ' || dept); ELSE DBMS_OUTPUT.PUT_LINE('The employee is already in that department...no change'); END IF; ELSIF rec_count > 1 THEN DBMS_OUTPUT.PUT_LINE('The employee ID you entered is not unique'); ELSE DBMS_OUTPUT.PUT_LINE('No employee records match the given employee ID'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Invalid employee or department ID, try again'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Unsuccessful change, please check ID numbers and try again'); END;

DECLARE USername varchar2(100); ip_address varchar2(100); BEGIN SELECT SYS_CONTEXT('USERENV','SESSION_USER'), SYS_CONTEXT('USERENV','IP_ADDRESS') INTO username, ip_address FROM DUAL; DBMS_OUTPUT.PUT_LINE('The connected user is: ' || username || ', and the IP address? is ' || ip_address); END;

DECLARE dept_id_var NUMBER(4) := &department_id; dept_name VARCHAR2(30); DECLARE dept_id_var NUMBER(4) := &department_id; dept_name VARCHAR2(30); emp_count NUMBER; BEGIN SELECT count(*) INTO emp_count FROM employees WHERE department_id = dept_id_var; SELECT department_name INTO dept_name FROM departments WHERE department_id = dept_id_var; DBMS_OUTPUT.PUT_LINE('There are ' || emp_count || ' employees ' || 'in the ' || dept_name || ' department.'); END;

DECLARE first varchar2(20); last varchar2(25); emp_last VARCHAR2(25) := '&last_name'; emp_count NUMBER; BEGIN SELECT count(*) INTO emp_count FROM employees WHERE last_name = emp_last; IF emp_count > 1 THEN DBMS_OUTPUT.PUT_LINE('More than 1 employee exists with that name.'); ELSE SELECT first_name, last_name INTO first, last FROM employees WHERE last_name = emp_last; DBMS_OUTPUT.PUT_LINE('The matching employee is: ' || first || ' ' || last); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Please enter a different last name.'); END;

DECLARE mgr_id NUMBER(6) := '&current_manager_id'; dept_count number := 0; BEGIN SELECT count(*) INTO dept_count DECLARE dept_name departments.department_name%TYPE; dept_id NUMBER(6) := &department_id; BEGIN SELECT department_name INTO dept_name FROM departments WHERE department_id = dept_id; DBMS_OUTPUT.PUT_LINE('The department with the given ID is: ' || dept_name); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('No department for the given ID'); END;

Вам также может понравиться