`

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 ;

分享到:
评论

相关推荐

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

    存储过程是一种封装了复杂逻辑的子程序,可以接受参数并执行一系列数据库操作。创建存储过程需要使用`CREATE OR REPLACE PROCEDURE`语句,如上所示,其中`PROC_INSERT`是存储过程的名称,`IS`关键字后跟过程体,包括...

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

    - **子程序**:包括存储过程和函数。这些子程序可以被其他PL/SQL代码调用,实现代码复用和模块化。 - **包**:包是一种封装一组相关对象(如子程序、游标、类型等)的方式,有助于提高代码的可维护性和重用性。 ###...

    ORACLE PL/SQL从入门到精通

    此外,书中还涉及到了ORACLE数据库的安装、存储过程的编写、序列操作、数据类型转换、程序设计指导原则、合并数据库中的数据行(MERGE)、约束、索引、子查询、分页技术等高级主题。 最后,还有关于字符串、数值、...

    一个对数据库的操作工具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支持多种数据类型...

    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的功能,使得数据库管理、开发和维护...

    oracle sql and pl/sql

    根据提供的文件信息,我们可以推断出本书主要关注的是Oracle SQL 和 PL/SQL 的掌握与应用。下面将基于这些信息来生成相关的知识点。 ### Oracle SQL 和 PL/SQL 知识点 #### 一、Oracle SQL 概述 1. **定义**:...

    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. **触发器**:理解触发器的工作原理,何时以及如何使用触发器来自动化数据库操作,如在数据更改前后的自动检查或...

    PL/SQL编程基础知识

    - **子程序**:包括存储过程和函数,可以被多个程序调用。 - **触发器**:当数据库发生特定事件时自动执行的程序。 - **程序包**:集合了一系列相关的子程序、类型定义和其他PL/SQL元素,便于管理和复用。 **2.3 ...

    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. **...

Global site tag (gtag.js) - Google Analytics