惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
NISL@THU
NISL@THU
E
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
K
Kaspersky official blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
S
Schneier on Security
G
GRAHAM CLULEY
The Hacker News
The Hacker News
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
爱范儿
爱范儿
P
Privacy International News Feed
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
S
Securelist
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Google Online Security Blog
Google Online Security Blog
美团技术团队
F
Fortinet All Blogs
小众软件
小众软件
Recorded Future
Recorded Future
V
Visual Studio Blog
B
Blog RSS Feed
H
Help Net Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
Latest news
Latest news
Spread Privacy
Spread Privacy
H
Heimdal Security Blog

博客园 - liuqun

oracle优化7(如何干预执行计划 - hints) oracle优化6(使用sql_trace/10046事件进行数据库诊断) oracle优化5(用索引提高效率) oracle优化4(sql语句性能诊断,sql执行计划) oracle优化3(访问Table的方式) oracle优化2(选用适合的ORACLE优化器) oracle优化1(数据库、数据表、数据表I/O优化原则) Oracle常用命令14(.net / java代码调用(sql代码、程序包过程)) Oracle常用命令13(数据库的启动、关闭) Oracle常用命令12(导入:imp、导出:exp) Oracle常用命令11(触发器) Oracle常用命令9(函数) Oracle常用命令8(过程) Oracle常用命令7(游标) Oracle常用命令6(PL/SQL) Oracle常用命令5(同义词、视图、索引) Oracle常用命令4(表分区) Oracle常用命令3(DDL、DML、TCL、DCL、序列) Oracle常用命令2(用户、角色管理)
Oracle常用命令10(程序包)
liuqun · 2011-03-29 · via 博客园 - liuqun

程序包:程序包规范、主体两部分组成

程序包规范

CREATE [OR REPLACE] PACKAGE package_name

IS|AS

[Public item declarations]

[Subprogram specification]

END [package_name];

程序包主体

CREATE [OR REPLACE] PACKAGE BODY package_name IS|AS

[Private item declarations]

[Subprogram bodies]

[BEGIN

Initialization]

END [package_name];

1

--用户注册(用户名不能重复)、登陆、所有用户信息的程序包

--程序包的声明

create or replace package package_user

is

       --声明一个引用游标

       type t_cursor is ref cursor;

       --返回所有用户信息

       procedure proc_UserGet(curUser out t_cursor);

       --注册

       procedure proc_UserAdd(p_name varchar2,p_realyname varchar2, p_password varchar2,p_tel varchar2, p_email varchar2,p_address varchar2, isSuccess out number);

       --登录

       procedure proc_Login(p_name varchar2,p_password varchar2, isSuccess out number);

end package_user;

程序包的主体:

create or replace package body package_user

is

       --返回所有用户信息

       procedure proc_UserGet(curUser out t_cursor)

       is

       begin

              open curUser for select * from userTab;

       end;

--注册用户

       procedure proc_UserAdd(p_name varchar2,p_realyname varchar2, p_password varchar2,p_tel varchar2, p_email varchar2,p_address varchar2, isSuccess out number)

       is    

              count_add number(4);

       begin

              //判断用户是否存在

              select count(*) into count_add from userTab where u_name=p_name;

              if count_add<1 then

                     insert into userTab values(seq_user.nextval,p_name,p_realyname,p_password,p_tel, p_email,p_address);

                     isSuccess := 1;

                     dbms_output.put_line('注册成功');

              else

                     isSuccess := 0;

                     dbms_output.put_line('用户名已存在,请重新注册!');

              end if;

       exception

              when others then

                     dbms_output.put_line('错误!');

       end;

--登录

       procedure proc_Login(p_name varchar2,p_password varchar2, isSuccess out number)                                                                                                   

       is

              count_add number(4);                   

       begin

              select count(*) into count_add from userTab where u_name=p_name and u_password=p_password;

              if count_add<1 then

                     isSuccess := 0;

                     dbms_output.put_line('你的用户或密码不正确,请重新登录!');

              else

                     isSuccess := 1;

                     dbms_output.put_line('登录成功!');

              end if;

       exception

              when others then

                     dbms_output.put_line('错误!');

       end;

end;

程序包的测试:

--测试:注册

declare

       isSuccess number(4);

begin

       package_user.proc_UserAdd('zhongzi2','周姿','zhongzi','2526294','zhong@163.com','湖南省湘潭', isSuccess) ;

       dbms_output.put_line( isSuccess );

end;

--测试:登陆

declare

       isSuccess number(4);

begin

       package_user.PROC_LOGIN('zhongzi2','zhongzi', isSuccess) ;

       dbms_output.put_line( isSuccess );

end;

--测试:得到所有用户信息

declare

       type user_curtype is ref cursor;

       curUser user_curtype;

       rowUser userTab%rowtype;

begin

       package_user.proc_UserGet(curUser) ;

       loop

              fetch curUser into rowUser;

              dbms_output.put_line('编号:' || rowUser.u_id || ' 用户名:' ||rowUser.u_name);

              exit when curUser%notfound;

       end loop;

end;

显示创建的子程序和程序包的信息

Select * from USER_OBJECTS;

显示存储子程序和程序包的源代码

SELECT line, text FROM USER_SOURC WHERE NAME='过程名';