Publicidad:
Terra
La Coctelera

Solucion Ejercicio Trigger

CREATE OR REPLACE TRIGGER trigger4
AFTER INSERT ON USER_COMUN
FOR EACH ROW
DECLARE
var1 VARCHAR2(100);
var2 VARCHAR2(100);

BEGIN
var1 := SUBSTR(:NEW.sal_usu,0,2);
var2 := SUBSTR(:NEW.sal_usu,3,4);
dbms_output.put_line('Valor de la variable1: ' || var1);
dbms_output.put_line('Valor de la variable2: ' || var2);

INSERT INTO USER_EXP1
(COD1, NOM_USU)
VALUES
(:NEW.COD_USU, var1);
dbms_output.put_line('Insercion en la tabla user_exp1');

INSERT INTO USER_EXP2
(COD2, SAL_USU)
VALUES
(:NEW.COD_USU, var2);
dbms_output.put_line('Insercion en la tabla user_exp2');
END ;
/

Ejemplo de :old :new

http://www.adp-gmbh.ch/ora/sql/trigger/new_old.html

Ejemplo de insercion con Trigger

CREATE OR REPLACE TRIGGER trigger3
AFTER INSERT ON USER_COMUN
FOR EACH ROW

BEGIN
INSERT INTO USER_EXP1
(COD1, NOM_USU)
VALUES
(:NEW.COD_USU, :NEW.NOM_USU);

INSERT INTO USER_EXP2
(COD2, SAL_USU)
VALUES
(:NEW.COD_USU, :NEW.SAL_USU);
END ;
/

Ejercicio de triggers.

Crear tres tablas:

Tabla USER_INICIO
USER_DIR
USER_COD_POST

USER_INICIO COD,NOMBRE,COD_POST, DIR
USER_DIR COD,DIR
USER_COD_POST COD, COD_POST

CREAR UN TRIGGER QUE GENERE SEGUN SE INSERTA
CONTENDIOS EN LAS TABLAS USER_DIR, USER_COD_POST

0111, JOSE, 28045,c/VAEL 2

Funciones de manipulacion cadena pl-sql

http://www.cs.odu.edu/~ibl/450/common/sqlstring.html

Trigger para inserción en tabla

CREATE OR REPLACE TRIGGER trigger1
AFTER INSERT ON emp
FOR EACH ROW WHEN (NEW.sal > 1000)

DECLARE
sal VARCHAR2(100);

BEGIN
INSERT INTO USER_TEMP
(user_name, user_salary)
VALUES
(:NEW.ename, :NEW.sal);
END ;
/

Consulta para obtener el ultimo registro de una tabla

select * from having rowid=(select max(rowid) from )

Respuesta al procedure con cursor explicito.

CREATE OR REPLACE PROCEDURE salariomax
IS
CURSOR salario
IS
SELECT ename,sal FROM emp;
nombre VARCHAR2(20);
sal NUMBER;
var1 NUMBER;

BEGIN
var1:=0;
OPEN salario;
LOOP

FETCH salario INTO nombre,sal;
EXIT WHEN salario%NOTFOUND;
if (sal>1000) THEN
var1:=var1+sal;
dbms_output.put_line(nombre||sal);
END IF;
--EXIT WHEN salario%NOTFOUND;
-- dbms_output.put_line(nombre||sal);
END LOOP;
CLOSE salario;
insert INTO USER_TEMP values('total',var1);

END;
/