`
1140566087
  • 浏览: 559138 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18530
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:314103
Group-logo
J2ME 基础学习课程集
浏览量:18737
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17581
社区版块
存档分类
最新评论

Oracle PL/SQL 包的使用

阅读更多
SQL> set serveroutput on;
SQL> remark 包:是由存储在一起的相关对象组成的PL SQL结构。包有两个独立的部分:即说明部分和包体,这两个部分是独立的存在数据字典中的;
SQL> remark 包的说明:包的说明包含了有关包的相关信息。该部分中不包含包的代码部分;

SQL> edit;
Wrote file afiedt.buf

  1  create or replace package testpak
  2  is
  3  procedure mysub(a int);
  4  function myfunc(b int) return int;
  5* end testpak;
SQL> /

Package created.

SQL> remark 包体:是一个独立于包头的数据字典对象。包体只能在包头完成编译后进行编译。包体中带有包头中描述的前向子程序代码段;
SQL> remark 注:包体是可选的;包头和包体中的过程和函数必须一致,包括子程序名和其参数名,以及参数模式。
SQL> create or replace package body testpak
  2  as
  3  procedure mysub(a int)
  4  is
  5  begin
  6  dbms_output.put_line(a*a);
  7  end mysub;
  8 
  9  function myfunc(b int) return int
10  is
11  begin
12  return b+1;
13  end myfunc;
14  end testpak;
15  /

Package body created.

SQL> remark .............................................................
SQL> remark 包和作用域:包头中声明的任何对象都是在其作用域中,使用包名.对象名 可以调用包中对应的对象;
SQL> remark 在包体中:包头中的 对象可以直接的引用,可以不用包名.
SQL> remark 包头中的变量是全局的  子过程中的变量是局部的;
SQL> create or replace package testpak
  2  as
  3  thecount int:=0;
  4  function add(m int) return int;
  5  procedure getcount;
  6  end;
  7  /

Package created.

SQL> remark 创建包体
SQL> create or replace package body testpak
  2  is
  3  function add(m int) return int
  4  is
  5  begin
  6  thecount:=thecount+m;
  7  return thecount;
  8  end add;
  9  procedure getcount
10  is
11  begin
12  dbms_output.put_line(thecount);
13  end getcount;
14  end;
15  /

Package body created.

SQL> remark 调用包体中的函数;
SQL> declare
  2  result int;
  3  begin
  4  result:=testpak.add(5);
  5  dbms_output.put_line('函数的运算结果为:'||result);
  6  dbms_output.put_line('当前包内的参数值为:'||testpak.thecount);
  7  testpak.getcount;
  8  end;
  9  /
函数的运算结果为:5                                                            
当前包内的参数值为:5                                                          
5                                                                              

PL/SQL procedure successfully completed.

SQL> /
函数的运算结果为:10                                                           
当前包内的参数值为:10                                                         
10                                                                             

PL/SQL procedure successfully completed.

SQL> remark 包中子过程的重载
SQL> remark 在包的内部,过程和函数可以被重载(overloding) 也就是说:可以有一个以上名称相同的,但参数不同的过程或函数。
SQL> remark 示例:子过程中的重载
SQL> create or replace package testpak
  2  as
  3  thecount int :=0;
  4  function add(m int) return int;
  5  function add(m int , n int) return int;
  6  procedure getcount;
  7  end;
  8  /

Package created.

SQL> remark 创建包体:实现包头中的函数和过程
SQL> create or replace package body testpak
  2  is
  3  function add(m int) return int
  4  is
  5  begin
  6  thecount:=thecount+m;
  7  return thecount;
  8  end add;
  9 
10  function add(m int , n int) return int
11  is
12  begin
13  thecount:=thecount+m+n;
14  return thecount;
15  end add;
16 
17  procedure getcount
18  is
19  begin
20  dbms_output.put_line(thecount);
21  end getcount;
22  end;
23  /

Package body created.

SQL> remark 调用函数和存储过程
SQL> declare
  2  result int;
  3  begin
  4  dbms_output.put_line('调用add(m int)的函数:');
  5  result :=testpak.add(5);
  6  dbms_output.put_line('当前包内thecount的值为:'||testpak.thecount);
  7  dbms_output.put_line('调用add(m int,n int)的函数:');
  8  result :=testpak.add(5,5);
  9  dbms_output.put_line('当前包内thecount的值为:'||testpak.thecount);
10  end;
11  /
调用add(m int)的函数:                                                         
当前包内thecount的值为:5                                                       
调用add(m int,n int)的函数:                                                   
当前包内thecount的值为:15                                                      

PL/SQL procedure successfully completed.

SQL> spool off;
[size=x-large][/size]
0
0
分享到:
评论

相关推荐

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    oracle pl/sql从入门到精通 配套源代码

    在Oracle PL/SQL中,我们可以通过使用SQL语句来与数据库进行交互,例如SELECT用于查询数据,INSERT、UPDATE和DELETE用于修改数据。PL/SQL还提供了游标(CURSOR)机制,允许我们逐行处理查询结果。此外,PL/SQL还支持...

    Oracle PL/SQL实例精解 数据库建立代码

    在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨如何在Oracle数据库中使用PL/SQL来构建一个名为"student"的模式,这包括创建数据库对象如表、索引,以及填充样本数据。 首先,"student"模式可能包含一...

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    Oracle PL/SQL程序设计(第5版)(上下册)

    ### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    PL/SQL是Oracle数据库中用于创建存储过程、函数、触发器、包等数据库对象的主要工具。第4版特别关注了在Oracle 11g环境下的新特性,如性能优化、错误处理和并发控制等。 1. **基础语法**:PL/SQL的基础包括声明变量...

    Oracle PL/SQL学习官方教材

    13. **PL/SQL与Java、.NET等其他平台的集成**:讲解如何使用Oracle的JDBC驱动或ODP.NET与PL/SQL交互,实现跨平台的应用程序开发。 14. **最佳实践**:教材可能还会提供编写高效、可读性强、易于维护的PL/SQL代码的...

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...

    oracle pl/sql 实例精解(中文原书第4版)

    本书是一本逐步分解的,详尽的pl/sql编程教程,使用真实场景的试验、范例和练习来介绍读者所需的pl/sql编程技能,涵盖oracle 11g的最新特性。作者的写作手法源自于在哥伦比亚大学教授pl/sql编程技术的经验,深度...

    Oracle PL/SQL programming(5th Edition)

    ### Oracle PL/SQL Programming知识点概览 #### 一、书籍基本信息 - **书名**:Oracle PL/SQL Programming(第五版) - **作者**:Steven Feuerstein 和 Bill Pribyl - **出版日期**:2009年10月1日 - **出版社**:...

    Oracle PL/SQL best practice

    Oracle PL/SQL最佳实践 Oracle PL/SQL是一种强大的编程语言,用于在Oracle数据库环境中构建复杂的业务逻辑和数据处理任务。Steven Feuerstein,被誉为Oracle PL/SQL语言的大师,分享了他在这一领域的关键最佳实践和...

    oracle 9i pl/sql程序设计笔记

    此匿名块展示了如何使用PL/SQL声明变量、插入数据到表中以及使用`DBMS_OUTPUT`包在屏幕上显示数据。值得注意的是,为了使`DBMS_OUTPUT.PUT_LINE`函数生效,需要确保服务器输出(Server Output)已开启,可通过命令`...

    Oracle PL/SQL by Example(4th Edition)

    《Oracle PL/SQL by Example(4th Edition)》是一本专为Oracle数据库用户设计的PL/SQL编程指南,尤其适合那些希望通过实践学习这一强大的过程式语言的开发者。本书的第四版详细介绍了Oracle PL/SQL的各种核心概念和...

    《精通Oracle PL/SQL》源码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作能力和PL(过程化语言)的程序设计特性,是Oracle数据库系统中的核心组件之一。《精通Oracle PL/SQL》这本书深入探讨了这个语言的...

    oracle PL/SQL pdf学习资料

    oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料

    Oracle PL/SQL编程及最佳实践

    Oracle PL/SQL 编程及最佳实践 Oracle PL/SQL 是一种高级编程语言,用于开发 Oracle 数据库中的存储过程、函数和触发器。PL/SQL language 提供了强大的编程能力,可以实现复杂的业务逻辑,并且与 Oracle 数据库紧密...

Global site tag (gtag.js) - Google Analytics