/*給emp表添加記錄的預存程序*/
create or replace procedure ins_table_emp(p_emp_id number,p_emp_name varchar2,p_emp_salary number) as
v_emp_id number:=p_emp_id;
v_emp_name varchar2(20):=p_emp_name;
v_emp_salary number:=p_emp_salary;
begin
insert into emp values (v_emp_id,v_emp_name,v_emp_salary);
end ins_table_emp;
/*給dept表添加記錄的預存程序*/
create or replace procedure ins_table_dept(p_dept_id number,p_dept_name varchar2,p_emp_id number) as
v_dept_id number:=p_dept_id;
v_dept_name varchar2(20):=p_dept_name;
v_emp_id number:=p_emp_id;
begin
insert into dept values (v_dept_id,v_dept_name,v_emp_id);
end ins_table_emp;
/*調用相應的預存程序實現記錄添加*/
begin
ins_table_emp(10000,'',4000);
ins_table_emp(10001,'CCM,2300);
ins_table_emp(10002,WMR,3500);
ins_table_emp(10003,'CXD',3500);
ins_table_emp(10004,'LXD',3500);
create or replace procedure add_salary(p_dept_name varchar2) as
v_dept_name varchar2(20):=p_dept_name;
begin
update emp set emp.EMP_SALARY=emp.EMP_SALARY*1.2 where emp.EMP_ID in (select emp.EMP_ID from emp,dept where emp.EMP_ID=dept.EMP_ID and dept.DEPT_ID='??ê?2?');
end add_salary;
create or replace trigger print_salary_change
before delete or insert or update on emp --觸發事件
for each row -- 每修改一行都需要調用此過程
declare --只有觸發器的聲明需要declare,過程和函數都不需要
salary_balance number;
begin
--:new 與:old分別代表該行在修改前和修改後的記錄
salary_balance=:new.salary=:old.salary;
dbms_output.PUT_LINE('old salary is: '|| :old.salary);
dbms_output.PUT_LINE('old salary is: '|| :new.salary);
dbms_output.PUT_LINE('old salary is: '|| to_char(salary_balance));
end print_salary_change;
/*包頭部分*/
create or replace package debug as
procedure debug(v_description varchar2,v_valueOfvariable varchar2)
procedure reset;
v_numberOfLine number;
end debug;
/*包體部分*/
create or replace package body debug as
procedure debug(v_description varchar2,v_valueOfvariable varchar2) is
begin
insert into debugtable
values(v_numberOfLine,v_description,v_valueOfvariable);
v_numberOfLine:=v_numberOfLine+1;
end debug;
procedure reset is
begin
v_numberOfLine:=1;
delete from debugtable;
end reset;
/*初始化部分*/
begin
reset;
end debug;