好文档 - 专业文书写作范文服务资料分享网站

Oracle plsql程序设计基础 

天下 分享 时间: 加入收藏 我要投稿 点赞

Oracle9i 开发指南:PL/SQL程序设计 清华大学出版社 ISBN 7-302-08002-x

Ben整理 2004年 秋

MSN: mascotzhuang@hotmail.com

Oracle常用命令举例

?? 基本语法

?? % type用法 ?? %rowtype用法 ?? TYPE用法 ?? 游标的使用 ?? for 循环 ?? loop循环 ?? while循环 ?? if / else 的用法 ?? case 的用法 ?? 错误定义

?? error的设定 ?? exception用法 ?? 存储过程及函数

?? procedure 的建立和调用 ?? function的建立和调用

?? 参数的调用(in 模式为按址调用,out / in out模式为按值调用。NOCOPY 强行转换成按址调用)。 ?? 软件包及封装

?? 软件包(PACKAGE)的建立和调用 ?? 软件包的全局结构 ?? 封装函数的纯度

?? 查看源代码及建立用户、用户的权限

?? 源代码的查看 ?? 建立用户及登陆 ?? 授予权限和权限收回 ?? 依赖

?? 直接依赖 ?? 查看依赖 ?? 包之间调用 ?? 触发器

?? 建立简单的触发器 ?? 触发器分类 ?? 稍复杂的触发器 ?? 条件谓词

?? 触发器中不可使用Commit ?? 系统触发器举例(LOGON) ?? instead of 触发器

Oracle9i 开发指南:PL/SQL程序设计 清华大学出版社 ISBN 7-302-08002-x

Ben整理 2004年 秋

MSN: mascotzhuang@hotmail.com

1. % type用法,提取% type所在字段的类型

declare

myid dept.id % type; myname dept.name % type; begin

select id,name into myid,myname from dept; dbms_output.put_line(myid); dbms_output.put_line(myname);

end; /

2. %rowtype用法,提取%rowtype所在的字段的类型

declare

type type_dept is table of dept % rowtype index by binary_integer; tb type_dept; begin

tb(1).id:='001'; tb(2).id:='001';

dbms_output.put_line(tb.COUNT); end; /

3. TYPE用法,相当于结构体

declare

lv_order_date DAte:=sysdate; lv_last_txt varchar2(5) default '001'; lv_last varchar2(10) not null:='us'; TYPE type_test is record( myid dept.id % type, myname dept.name % type); rec type_test; begin

lv_order_date:=sysdate; dbms_output.put_line(lv_last); select id,name into rec from dept;

dbms_output.put_line(rec.myid); dbms_output.put_line(rec.myname); end;

Oracle9i 开发指南:PL/SQL程序设计 清华大学出版社 ISBN 7-302-08002-x

Ben整理 2004年 秋

MSN: mascotzhuang@hotmail.com

/

4. 游标的使用 declare g_id char(10):='002'; find_not char(1):='N'; cursor cur is select * from dept; TYPE type_dept is record( myid dept.id % type, myname dept.name % type, myaddr dept.addr % type); rect type_dept; begin open cur; loop fetch cur into rect; exit when cur% NOTFOUND; if rect.myid=g_id then find_not:='Y'; dbms_output.put_line('Find it!!'); dbms_output.put_line('DEPT ID:' || rect.myid); dbms_output.put_line('NAME:' || rect.myname); dbms_output.put_line('ADDR:' || rect.myaddr); end if; end loop; close cur; if find_not='N' then dbms_output.put_line('no record'); end if; end; / 提取cur指向的记录到rect结构中 cur指向表 5. for 循环

begin

for i in 1..5 loop

dbms_output.put_line(i); end loop; end; /

6.

loop循环

Oracle9i 开发指南:PL/SQL程序设计 清华大学出版社 ISBN 7-302-08002-x

Ben整理 2004年 秋

MSN: mascotzhuang@hotmail.com

declare v number:=1; begin

loop

exit when v>5;

dbms_output.put_line(v); v:=v+1; end loop; end; /

7. while循环

declare v number:=1; begin

while v<5 loop

dbms_output.put_line(v); v:=v+1; end loop; end; /

8. error的设定

declare

v1 number:=90; begin

if v1=10 then dbms_output.put_line('v1 is 10'); elsif v1=20 then dbms_output.put_line('v2 is 20'); else goto err;

dbms_output.put_line('normal end'); <>

dbms_output.put_line('error found'); end if; end; /

Oracle9i 开发指南:PL/SQL程序设计 清华大学出版社 ISBN 7-302-08002-x

Ben整理 2004年 秋

MSN: mascotzhuang@hotmail.com

9. exception用法

declare

ex Exception; begin

Update dept set name='Edison' where id='100'; if SQL%NOTFOUND Then

Raise ex; end if; Exception end; / declare

type rc_dept is record ( myid dept.id%type, myname dept.name%type, myaddr dept.addr%type );

tb rc_dept; begin

select id,name,addr into tb from dept where id=:gb_id; dbms_output.put_line('id:' || tb.myid); dbms_output.put_line('name:' || tb.myname); dbms_output.put_line('addr:' || tb.myaddr); When ex then

dbms_output.put_line('update failed.');

exception

when NO_DATA_FOUND then

dbms_output.put_line('no record is found');

dbms_output.put_line('too many rows are selected');

when TOO_MANY_ROWS then when OTHERS then

dbms_output.put_line('undefine error'); dbms_output.put_line('error coede: ' || SQLCODE); end; /

dbms_output.put_line('error message:' || SQLERRM);

Oracle plsql程序设计基础 

Oracle9i开发指南:PL/SQL程序设计清华大学出版社ISBN7-302-08002-xBen整理2004年秋MSN:mascotzhuang@hotmail.comOracle常用命令举例??基本语法??%type用法??%rowtype用法??TYPE用法??游标的使用
推荐度:
点击下载文档文档为doc格式
7qna1893aj3uh255bmmg
领取福利

微信扫码领取福利

微信扫码分享