Você está na página 1de 16

Taller de Base de

Datos II
Sesin 7-8

DDL Oracle
Sentencias DDL son:
CREATE TABLECrea una tabla. Para ello el usuario
debe de tener el privilegioCREATE TABLE.
ALTER TABLEPermite modificar la estructura
definida para una tabla.
DROP TABLEElimina una tabla (datos y estructura)
y sus ndices. No se puede hacer Rollback de esta
sentencia.
RENAMECambia el nombre de una tabla, vista,
secuencia o sinnimo. (RENAME TABLE TO )

Sentencia INSERT(I)
INSERT INTO table (column1, column2, ... ) VALUES
(expression1, expression2, ... );
Cuando se desea ingresar varios registros haciendo
uso de un SELECT
INSERT INTO table (column1, column2, ... ) SELECT
expression1, expression2, ... FROM source_table
WHERE conditions;

Sentencia INSERT(II)
Cuando solo se desea ingresar algunas columnas de
la tabla
INSERT INTO suppliers (supplier_id, supplier_name)
VALUES (5000, 'Apple');

Sentencia INSERT(II)
Cuando se desea evitar los duplicados
INSERT INTO clients (client_id, client_name,
client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers WHERE NOT EXISTS (SELECT *
FROM clients WHERE clients.client_id =
suppliers.supplier_id);

Sentencia UPDATE
Utilizada para actualizar registros de una tabla
UPDATE table SET column1 = expression1, column2 =
expression2, ... WHERE conditions;
Para actualizar mltiples registros
UPDATE customers SET state = 'California',
customer_rep = 32 WHERE customer_id > 100;

Sentencia DELETE
Utilizada para eliminar registros de la tabla
DELETE FROM table WHERE conditions;

Sub-consulta en Oracle

La subconsulta se ejecuta una vez y antes de la


consulta principal.
El resultado de ella es usado por la consulta principal
externa.

Gua Uso de Subconsultas


Encierre las subconsultas entre parntesis.
No aada una clusula ORDER BY a una
subconsulta.
Utilice operadores a nivel de fila para
subconsultas que devuelvan solo una
filaMONOREGISTRO.
Utilice operadores que actan sobre varios
registros para subconsultas que devuelven

Procedimientos
almacenados

Un
procedimiento
es
un
subprograma que ejecuta una
accin especifica y que no
devuelve
ningn
valor.
Un
procedimiento tiene un nombre,
un conjunto de parmetros
(opcional) y un bloque de cdigo.
Los procedimientos almacenados
pueden hacer referencia a tablas,
vistas, a funciones definidas por
el
usuario,
a
otros
procedimientos almacenados.

Sintaxis
CREATE [OR REPLACE]
PROCEDURE <procedure_name> [(<param1> [IN|
OUT|IN OUT] <type>,
<param2> [IN|OUT|IN OUT] <type>, ...)]
IS
-- Declaracion de variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepcion
END [<procedure_name>];
El uso de OR REPLACE permite sobreescribir un procedimiento
existente. Si se omite, y el procedimiento existe, se producir, un error.

create procedure pa_libros_aumentar10


as
update libros set precio=precio+precio*0.1;
Para ejecutar un procedimiento almacenado se usa la siguiente
sentencia:

execute pa_libros_aumentar10;

CREATE OR REPLACE PROCEDURE award_bonus (emp_id IN NUMBER,


bonus_rate IN NUMBER)
AS
Variables

emp_comm
employees.commission_pct%TYPE;
locales

emp_sal
employees.salary%TYPE;

salary_missing EXCEPTION;
BEGIN

SELECT salary, commission_pct INTO emp_sal, emp_comm FROM employees

WHERE employee_id = emp_id;

IF emp_sal IS NULL THEN

RAISE salary_missing;

ELSE

IF emp_comm IS NULL THEN

DBMS_OUTPUT.PUT_LINE('Employee ' || emp_id || ' receives a bonus: '

|| TO_CHAR(emp_sal * bonus_rate) );

ELSE

DBMS_OUTPUT.PUT_LINE('Empleado ' || emp_id

|| ' ya recibe comisin. No bonificacin aplicable.');

END IF;

END IF;
EXCEPTION

WHEN salary_missing THEN

DBMS_OUTPUT.PUT_LINE('Empleado ' || emp_id ||

' no tiene salario. No procede.');

Funciones

CREATE OR REPLACE
FUNCTION fn_Obtener_Precio(p_producto
VARCHAR2)
RETURN NUMBER
IS
result NUMBER;
BEGIN
SELECT PRECIO INTO result
FROM PRECIOS_PRODUCTOS
WHERE CO_PRODUCTO = p_producto;
return(result);
EXCEPTION
WHEN NO_DATA_FOUND THEN
return 0;
END ;

Triggers

CREATE OR REPLACE TRIGGER drop_trigger


BEFORE DROP ON hr.SCHEMA
BEGIN
RAISE_APPLICATION_ERROR ( num => -20000,
msg => 'Cannot drop object');
END;

Esquema HR

Você também pode gostar