Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. conectarse con el usuario northwind
- sqlplus own_northwind/oracle
- 2. crear un procedimiento almacenado que muestre en pantalla
- los nombres de los clientes y ordenes realizadas en un periodo
- de tiempo
- /* CON FECHA */
- CREATE OR REPLACE PROCEDURE ListadoClientes(PERIODO DATE)
- IS
- BEGIN
- FOR I IN (SELECT C.CompanyName,O.OrderID FROM Customers C
- INNER JOIN Orders O ON C.CustomerID=O.CUstomerID
- WHERE O.OrderDate=PERIODO) LOOP
- DBMS_OUTPUT.PUT_LINE(' CLIENTE :' || TO_CHAR(I.COMPANYNAME)
- || ' ORDEN : ' || TO_CHAR(I.ORDERID));
- END LOOP;
- END;
- /
- /* DESDE - HASTA (DIAS) */
- CREATE OR REPLACE PROCEDURE ListadoClientes(DESDE NUMBER, HASTA NUMBER)
- IS
- BEGIN
- FOR I IN (SELECT C.CompanyName,O.OrderID,O.OrderDate FROM Customers C
- INNER JOIN Orders O ON C.CustomerID=O.CUstomerID
- WHERE EXTRACT(DAY FROM O.OrderDate) BETWEEN DESDE AND HASTA) LOOP
- DBMS_OUTPUT.PUT_LINE(' CLIENTE :' || TO_CHAR(I.COMPANYNAME)
- || ' ORDEN : ' || TO_CHAR(I.ORDERID));
- END LOOP;
- END;
- /
- tablas involucradas(customer y orders)
- 3. ingresar como usuario scott y crear una tabla llamada
- emp_log(emp_id,date_log,sal,action)
- SQLPLUS SCOTT/SCOTT
- CREATE TABLE EMP_LOG(
- EMP_ID NUMBER,
- date_log DATE DEFAULT(SYSDATE),
- SAL NUMBER(7,2),
- ACTION VARCHAR2(100));
- 4. crear un TRIGGER llamado emp_log que se dispare cuando
- se quiera actualizar el valor de sal de la tabla emp en valores
- mayores a 1000 e INSERT en la tabla emp_log los valores que se han actualizado
- CREATE OR REPLACE TRIGGER emp_log BEFORE UPDATE ON EMP
- FOR EACH ROW
- WHEN (NEW.SAL > 1000)
- BEGIN
- INSERT INTO EMP_LOG(EMP_ID,SAL,ACTION)VALUES(:OLD.EMPNO,:NEW.SAL,'ACTUALIZAR');
- END;
- probarlo com UPDATE emp SET sal=sal + 1250 WHERE deptno=20;
- /* EN LOS 3 EVENTOS */
- CREATE OR REPLACE TRIGGER emp_log AFTER INSERT OR UPDATE OR DELETE ON EMP
- FOR EACH ROW
- BEGIN
- IF INSERTING THEN
- INSERT INTO EMP_LOG(EMP_ID,SAL,ACTION)VALUES(:NEW.EMPNO,:NEW.SAL,'INSERCION');
- ELSIF UPDATING THEN
- IF (:NEW.SAL > 1000) THEN
- INSERT INTO EMP_LOG(EMP_ID,SAL,ACTION)VALUES(:OLD.EMPNO,:NEW.SAL,'ACTUALIZACION');
- END IF;
- ELSIF DELETING THEN
- INSERT INTO EMP_LOG(EMP_ID,SAL,ACTION)VALUES(:OLD.EMPNO,:OLD.SAL,'ELIMINACION');
- END IF;
- END;
- /
- 5. CREAR UN PAQUETE Y ASIGNARLE PERMISOS DE EJECUCION DESDE OTRO USUARIO
- CREATE OR REPLACE PACKAGE CONSULTAS IS
- PROCEDURE ListadoClientes(DESDE NUMBER, HASTA NUMBER);
- END CONSULTAS;
- CREATE OR REPLACE PACKAGE BODY CONSULTAS IS
- PROCEDURE ListadoClientes(DESDE NUMBER, HASTA NUMBER)
- IS
- BEGIN
- FOR I IN (SELECT C.CompanyName,O.OrderID,O.OrderDate FROM Customers C
- INNER JOIN Orders O ON C.CustomerID=O.CUstomerID
- WHERE EXTRACT(DAY FROM O.OrderDate) BETWEEN DESDE AND HASTA) LOOP
- DBMS_OUTPUT.PUT_LINE(' CLIENTE :' || TO_CHAR(I.COMPANYNAME)
- || ' ORDEN : ' || TO_CHAR(I.ORDERID));
- END LOOP;
- END ListadoClientes;
- END CONSULTAS;
- /* CREANDO tablespace y usuario */
- CREATE tablespace tbs_paquete datafile 'c:\app\oracle\oradata\orcl\tbs_paquete.dbf' size
- 20m;
- CREATE USER own_paquete identified BY 123 DEFAULT tablespace tbs_paquete temporary
- tablespace temp;
- grant CONNECT, resourte TO own_paquete;
- /* ASIGNANDO PERMISO DE EJECUCION DEL PAQUETE AL USUARIO OWN_PAQUETE */
- grant EXECUTE ON own_northwind.consultas TO own_paquete;
Advertisement
Add Comment
Please, Sign In to add comment