设为首页 加入收藏

TOP

PLSQL练习(四)
2014-11-23 23:37:19 来源: 作者: 【 】 浏览:34
Tags:PLSQL 练习
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'

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇环回链接服务器 下一篇sqlserver链接服务器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: