t_num NUMBER;
BEGIN
DECLARE
past_due EXCEPTION;
acct_num NUMBER;
due_date DATE := SYSDATE - 1;
todays_date DATE := SYSDATE;
BEGIN
IF due_date < todays_date
THEN
RAISE past_due;
END IF;
END;
EXCEPTION
WHEN past_due
THEN
DBMS_OUTPUT.put_line('Handling PAST_DUE exception.');
WHEN OTHERS
THEN
--go this path
DBMS_OUTPUT.put_line('Could not recognize PAST_DUE_EXCEPTION in this scope.');
END;
DECLARE
past_due EXCEPTION;
pragma exception_init(past_due, -259);
acct_num NUMBER;
BEGIN
DECLARE
past_due EXCEPTION;
pragma exception_init(past_due, -259);
acct_num NUMBER;
due_date DATE := SYSDATE - 1;
todays_date DATE := SYSDATE;
BEGIN
IF due_date < todays_date
THEN
RAISE past_due;
END IF;
END;
EXCEPTION
WHEN past_due
THEN
--go this path
DBMS_OUTPUT.put_line('Handling PAST_DUE exception.');
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line('Could not recognize PAST_DUE_EXCEPTION in this scope.');
END;
----------------------------------------------------------------
begin
raise_application_error(-20111, 'error message');
exception
when others then
dbms_output.put_line(sqlcode);
dbms_output.put_line(sqlerrm);
end;
----------------------------------------------------------------
create or replace package my_package is
num number := 5;
one number :=1;
function f return number;
procedure print;
function add (first number, second number default 1) return number; --second has a default value of 1
end my_package;
create or replace package body my_package is
i number := 3;
function f return number is
begin
return num;
end f;
procedure print is
begin
dbms_output.put_line(f());
end print;
function add (first number, second number) return number is
begin
return first + second;
end add;
end my_package;
begin
dbms_output.put_line(my_package.add(5));
dbms_output.put_line(my_package.add(5, 5));
dbms_output.put_line(my_package.add(second => 5, first=>12));
my_package.print();
dbms_output.put_line(my_package.num);
end;
----------------------------------------------------------------------
create table emp as select * from employees;
create table tab (id number, oldsal number);
create or replace trigger tri
before update on emp
for each row
declare
progma autonomous_transaction;
begin
insert into tab values (:old.employee_id, :old.salary);
commit;
end tri;
update emp set salary = salary;
rollback;--although rollback here, data is inserted into tab in trigger
select * from tab;
---------------------------------
begin
for i in 1..5 loop
dbms_output.put_line(i);
if i=3 then
exit;--exit the loop
end if;
end loop;
dbms_output.put_line('exit loop');
end;
------------------------------
begin
for j in 1..2 loop
for i in 1..5 loop
dbms_output.put_line('innner loop ' || i);
if i=3 then
exit;--exit the inner loop
end if;
end loop;
dbms_output.put_line('outer loop ' || j);
end loop;
dbms_output.put_line('end'