`

Oracle 存储函数和存储过程(PL/SQL子程序)

阅读更多

文章来源:http://www.itnose.net/detail/6033960.html
更多文章:http://www.itnose.net/type/97.html

PL/SQL子程序 包括函数和过程。这里的函数指的是用户自己定义的函数,和系统函数是不同的。子程序一般是完成特定功能的PL/SQL程序块,并且具有一定的通用性,可以被不同的应用程序多次调用。Oracle提供可以把PL/SQL程序存储在数据库中,并可以再任何地方来运行它。这样就叫做存储过程或者是函数。过程和函数的唯一区别就是函数总是向调用者返回数据,而过程则不返回数据。

函数

如果用户要经常执行某些操作,并且需要返回特定的数据,那么就可以将这些操作构造成一个函数。

可以使用SQL语句定义函数。

基本语法:

create or replace function fun_name(argument [in | out | in out ]datatype  ...)
return datatype 
is | as
       -- 需要定义的变量 ,记录类型 , 游标
begin
       --函数的执行体
exception
       --处理出现的异常
end ;

其中,return datatype , 是要返回数据的类型。IN参数标记表示传递给函数的值在函数执行中不改变;OUT标记表示一个值在函数进行计算并通过该参数传递给调用语句;IN OUT 标记表示传递给函数的值可以变化并传递给调用语句。

例:定义一个返回hello 的函数

create or replace function hello
return varchar2 
is
begin
       return 'Hello World';
end ;

执行 ,Function created ,函数创建成功。

函数的调用,与Oracle内置函数的调用相同,可以使用select hello from dual ;进行调用,也可以使用PL/SQL语句进行调用 :

begin 

  dbms_output.put_line(hello);

end ;

例:创建带参数的helloworld函数

create or replace function helloworld(str varchar2)
return varchar2
is
begin
       return 'Hello' || '_' ||str ;
end ;

函数的调用要在函数名称后面加上参数,即:select helloworld('World') from dual ;使用Pl/sql的调用除了加上参数外与上面相同,不在赘述。

例:求一个部门中,员工的工资总数的函数

create or replace function get_sal(dept number)
return number 
is
       v_sum number(10) := 0 ;
       cursor sal_cursor is select sal from emp where deptno = dept ;
begin 
       for c in sal_cursor loop
           v_sum := v_sum + c.sal ;
       end loop ;
       return v_sum ;
end ;

存储过程

存储过程,可以被多个应用程序调用,也可以向存储过程传递参数,向存储过程传回参数。

基本语法

create or replace procedure pro_name(argument [in | out | in out ]datatype  ...) 
is | as
       -- 需要定义的变量 ,记录类型 , 游标
begin
       --函数的执行体
exception
       --处理出现的异常
end ;

例:使用存储过程,求部门的工资总和

create or replace procedure get_sal1(dept number ,sumsal out  number)
is
       cursor sal_cursor is select sal from emp where deptno = dept ;
begin 
       sumsal := 0 ;
       for c in sal_cursor loop
           sumsal := sumsal + c.sal ;
       end loop ;
       dbms_output.put_line(sumsal);
end ;

存储过程的调用:

declare 
  v_sum number(10) := 0 ;
begin 
  get_sal1(30 , v_sum);
end ;

调用格式:

 

CALL | EXCEUTE procedure_name(arg_list) ;

可以使用show error 命令来提示源码的错误位置。使用user_error 数据字典来查看各存储过程的错误位置。

 

删除过程和函数

删除过程

语法如下:

DROP PROCEDURE[USER.]procedure_name ;

删除函数

语法如下:

DROP FUNCTION [USER.]function_name ;

分享到:
评论

相关推荐

    一个对数据库的操作工具PL/SQLpl/sqL工具

    6. **子程序**:PL/SQL支持函数和过程的定义,这些子程序可以在多个地方重复使用,降低了代码的冗余。 7. **包(Packages)**:包是将相关的类型、变量、常量、过程和函数组合在一起的命名实体,便于管理和重用。 ...

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

    1. **PL/SQL基础**:涵盖PL/SQL的基本语法,包括变量声明、常量定义、条件语句(IF-THEN-ELSIF-ELSE)、循环结构(WHILE, FOR)、异常处理(BEGIN-EXCEPTION-END)以及子程序(PROCEDURE和FUNCTION)的创建与调用。...

    Oracle8 PL/SQL程序设计

    4. **子程序**:学习如何定义和调用函数、存储过程,以及了解参数传递的方式,包括IN、OUT、IN OUT参数。 5. **游标**:掌握游标的使用,包括声明、打开、关闭、提取数据等操作,以及如何在PL/SQL中进行动态SQL处理...

    oracle_oracle_oraclepl/sql_

    1. **PL/SQL简介**:PL/SQL是Oracle数据库的内置编程语言,用于创建存储过程、函数、触发器和包。它的语法基于SQL,但增加了流程控制、异常处理和数据类型等特性。 2. **变量和数据类型**:PL/SQL支持多种数据类型...

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    在PL/SQL中,我们可以编写存储过程、函数、触发器、游标和异常处理等。这些组件对于数据库的业务逻辑处理至关重要,可以提高数据操作的安全性,减少网络通信,同时提高性能。 在"plsql_day02"这个压缩包文件中,很...

    Oracle PL/SQL学习官方教材

    3. **子程序**:教材会详细讲解函数(Function)和过程(Procedure)的创建和调用。函数返回值,而过程不返回值,它们都可以接受参数并执行特定任务。 4. **游标**:在处理大量数据时,游标(Cursor)是非常重要的...

    ORACLE PL/SQL 程序设计(第五版)

    《ORACLE PL/SQL 程序设计(第五版)》是Oracle数据库开发领域的一本经典教程,专注于讲解如何使用PL/SQL这一强大的过程化语言进行数据库编程。这本书旨在帮助读者掌握PL/SQL的基本概念、语法和高级特性,以便在实际...

    oracle pl/sql fundamentals

    12. **数据库对象的DDL操作**:学习如何在PL/SQL中创建、修改和删除数据库对象,如表、视图、索引和存储过程。 13. **PL/SQL与SQL的集成**:了解如何在PL/SQL中嵌入SQL语句,以及SQL语句如何与PL/SQL逻辑相互配合。...

    oracle 经典资料及PL/SQL 使用指南 英文版

    4. 子程序与包:PL/SQL允许定义函数、过程和包,用于封装代码,提高可重用性。了解如何定义和调用这些子程序。 5. 异常处理:PL/SQL提供了一套完整的异常处理机制,学习者需要学会如何捕获和处理运行时错误。 三、...

    Oracle数据库SQL和PL/SQL实例教程

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,SQL(结构化查询语言)是与所有关系数据库进行交互的标准语言,而PL/SQL是Oracle数据库特有的编程语言,它扩展了SQL的功能,使得数据库管理、开发和维护...

    PLSQL.zip_oracl_oracle pl/sql ppt_pl sql ppt tutorial_pl/sql_pls

    4. **子程序**:PL/SQL支持函数和过程的创建,它们可以封装一系列的操作并在需要时调用,提高代码的复用性和可维护性。 5. **异常处理**:PL/SQL内置了异常处理机制,允许程序员预定义和捕获运行时错误,以优雅的...

    pl/sql程序设计ppt

    包是PL/SQL中的高级特性,用于组织相关的过程、函数和其他对象。包分为包规范(PACKAGE SPECIFICATION)和包体(PACKAGE BODY)。包规范声明包的公共接口,包体实现这些接口。包可以隐藏内部实现,提高代码安全性。...

    oracle数据库 sql 和pl/sql实例教程

    8. **存储过程和函数**:学习如何创建和调用存储过程和函数,以及它们在数据库应用程序中的作用。 9. **触发器**:理解触发器的工作原理,何时以及如何使用触发器来自动化数据库操作,如在数据更改前后的自动检查或...

    Oracle8i PL/SQL高级程序设计 高清晰版

    共分为7部分(7个pdf文档): 第一部分:PL/SQL介绍及开发环境 ...2.PL/SQL开发和运行环境 3.跟踪和调试 第二部分:非对象功能 4.创建子程序和包 5.使用子程序和包 6.数据库触发器 7.数据库作业和文件输入输出

    Oracle8 PL/SQL高级程序设计.rar

    包是一种组织PL/SQL元素(如过程、函数和变量)的方式,可以提高代码的复用性和封装性。 5. **游标**:游标是处理单个结果集中的行的机制。在PL/SQL中,可以声明、打开、提取和关闭游标来逐行处理查询结果。 6. **...

    pl/sql学习笔记

    PL/SQL(Procedural Language/Structured ...通过编写简单的脚本、存储过程和函数,逐步掌握PL/SQL的精髓,才能在Oracle数据库开发中游刃有余。对于初学者来说,找到合适的资源和教程,如本文档,是快速入门的关键。

    pl/sql 8 Oracle客户端

    PL/SQL的主要组成部分包括变量声明、条件语句(如IF-THEN-ELSE)、循环结构(如WHILE和FOR)、异常处理以及存储过程和函数的定义。它允许开发人员编写能够处理大量数据的高效代码,并通过游标来逐行处理查询结果。...

    PL/SQL 用户指南与参考

    PL/SQL 用户指南与参考 第一章 PL/SQL一览 第二章 PL/SQL基础 第三章 PL/SQL数据类型 ...第八章 PL/SQL子程序 第九章 PL/SQL包 第十章 PL/SQL对象类型 第十一章 本地动态SQL 第十二章 PL/SQL应用程序性能调优

    PL/SQL学习课件

    你将了解到PL/SQL如何作为Oracle数据库中的一个内置编程环境,如何编写和执行存储过程、函数和触发器。 第二章“访问Oracle”将探讨如何通过PL/SQL连接到Oracle数据库,使用连接字符串、用户认证和游标来操作数据。...

    PL/SQL development9.0.3

    包包含一组相关的函数和过程,可以有公共的变量和常量。 5. **异常处理**:PL/SQL的异常处理机制允许程序员预定义和自定义异常,通过EXCEPTION部分捕获和处理错误。 6. **游标**:游标用于处理结果集,允许在循环...

Global site tag (gtag.js) - Google Analytics