SET Serveroutput ON
CREATE OR REPLACE TRIGGER log_salary
AFTER UPDATE ON emp
FOR EACH ROW
BEGIN
INSERT INTO Emp_log(Emp_id, Log_date, New_salary, Action)
VALUES (:NEW.Eno, SYSDATE, :NEW.Esalary, 'New Salary');
END;6
/
Easy Learning... (Web Development,.NET Technology,Oracle,Silverlight,REST,SQL,Oracle,MySQL,Data Science, Python and many more ...)
SET Serveroutput ON
CREATE OR REPLACE TRIGGER log_salary
AFTER UPDATE ON emp
FOR EACH ROW
BEGIN
INSERT INTO Emp_log(Emp_id, Log_date, New_salary, Action)
VALUES (:NEW.Eno, SYSDATE, :NEW.Esalary, 'New Salary');
END;6
/
DROP TABLE Emp_log;
CREATE TABLE Emp_log (
Emp_id CHAR(6),
Log_date DATE,
New_salary NUMBER(10,2),
Action VARCHAR2(20));
SET Serveroutput ON
CREATE OR REPLACE TRIGGER display_salary
BEFORE UPDATE ON EMP
FOR EACH ROW
BEGIN
dbms_output.put_line('Old salary: ' || :OLD.esalary);
END;
/
connect system/password;
CREATE USER bca
IDENTIFIED BY bca
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 2 Roles for DEVELOPER
GRANT CONNECT TO bca CONTAINER=ALL;
GRANT RESOURCE TO bca CONTAINER=ALL;
ALTER USER bca DEFAULT ROLE NONE;
-- 3 System Privileges for DEVELOPER
GRANT CREATE SESSION TO bca;
GRANT CREATE TABLE TO bca;
GRANT CREATE TRIGGER TO bca;
GRANT CREATE SEQUENCE TO bca;
-- 2 Tablespace Quotas for DEVELOPER
ALTER USER bca QUOTA UNLIMITED ON SYSAUX;
ALTER USER bca QUOTA UNLIMITED ON USERS;
SET Serveroutput ON
DECLARE
veno emp.eno%type;
vename emp.ename%type;
vesalary emp.esalary%type;
vedoj emp.edoj%type;
vedno emp.edno%type;
veno1 emp.eno%type;
vename1 emp.ename%type;
vesalary1 emp.esalary%type;
BEGIN
veno := '&veno';
vename := '&vename';
vesalary := &vesalary;
vedoj := '&vedoj';
vedno := '&vedno';
veno1 := '&veno1';
vename1 := '&vename1';
vesalary1 := &vesalary1;
emp_package.addemp(veno1,vename1,vesalary1);
emp_package.addemp(veno,vename,vesalary,vedoj,vedno);
END;
/
CREATE OR REPLACE PACKAGE BODY emp_package AS
PROCEDURE addemp(veno emp.eno%type, vename emp.ename%type, vesalary emp.esalary%type)
IS
BEGIN
INSERT INTO emp (eno,ename,esalary)
VALUES(veno, vename, vesalary);
END;
PROCEDURE addemp(veno emp.eno%type, vename emp.ename%type, vesalary emp.esalary%type, vedoj emp.edoj%type, vedno emp.edno%type)
IS
BEGIN
INSERT INTO emp (eno,ename,esalary,edoj,edno)
VALUES(veno, vename, vesalary, vedoj, vedno);
END;
END emp_package;
/
CREATE OR REPLACE PACKAGE emp_package AS
PROCEDURE addemp(veno emp.eno%type, vename emp.ename%type, vesalary emp.esalary%type);
PROCEDURE addemp(veno emp.eno%type, vename emp.ename%type, vesalary emp.esalary%type, vedoj emp.edoj%type, vedno emp.edno%type);
END emp_package;
/
SET Serveroutput ON
DECLARE
veno emp.eno%type;
BEGIN
veno := '&veno';
DBMS_OUTPUT.PUT_LINE(emp_name.find_name(veno));
END;
/
CREATE OR REPLACE PACKAGE BODY emp_name AS
FUNCTION find_name(veno emp.eno%TYPE) return varchar IS
vename emp.ename%TYPE;
BEGIN
SELECT ename INTO vename
FROM emp
WHERE eno = veno;
RETURN vename;
END;
END emp_name;
/
CREATE OR REPLACE PACKAGE emp_name AS
FUNCTION find_name(veno emp.eno%type)return varchar;
END emp_name;
/