文章来源: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 ;
相关推荐
存储过程是一种封装了复杂逻辑的子程序,可以接受参数并执行一系列数据库操作。创建存储过程需要使用`CREATE OR REPLACE PROCEDURE`语句,如上所示,其中`PROC_INSERT`是存储过程的名称,`IS`关键字后跟过程体,包括...
- **子程序**:包括存储过程和函数。这些子程序可以被其他PL/SQL代码调用,实现代码复用和模块化。 - **包**:包是一种封装一组相关对象(如子程序、游标、类型等)的方式,有助于提高代码的可维护性和重用性。 ###...
此外,书中还涉及到了ORACLE数据库的安装、存储过程的编写、序列操作、数据类型转换、程序设计指导原则、合并数据库中的数据行(MERGE)、约束、索引、子查询、分页技术等高级主题。 最后,还有关于字符串、数值、...
6. **子程序**:PL/SQL支持函数和过程的定义,这些子程序可以在多个地方重复使用,降低了代码的冗余。 7. **包(Packages)**:包是将相关的类型、变量、常量、过程和函数组合在一起的命名实体,便于管理和重用。 ...
1. **PL/SQL基础**:涵盖PL/SQL的基本语法,包括变量声明、常量定义、条件语句(IF-THEN-ELSIF-ELSE)、循环结构(WHILE, FOR)、异常处理(BEGIN-EXCEPTION-END)以及子程序(PROCEDURE和FUNCTION)的创建与调用。...
4. **子程序**:学习如何定义和调用函数、存储过程,以及了解参数传递的方式,包括IN、OUT、IN OUT参数。 5. **游标**:掌握游标的使用,包括声明、打开、关闭、提取数据等操作,以及如何在PL/SQL中进行动态SQL处理...
1. **PL/SQL简介**:PL/SQL是Oracle数据库的内置编程语言,用于创建存储过程、函数、触发器和包。它的语法基于SQL,但增加了流程控制、异常处理和数据类型等特性。 2. **变量和数据类型**:PL/SQL支持多种数据类型...
3. **子程序**:教材会详细讲解函数(Function)和过程(Procedure)的创建和调用。函数返回值,而过程不返回值,它们都可以接受参数并执行特定任务。 4. **游标**:在处理大量数据时,游标(Cursor)是非常重要的...
《ORACLE PL/SQL 程序设计(第五版)》是Oracle数据库开发领域的一本经典教程,专注于讲解如何使用PL/SQL这一强大的过程化语言进行数据库编程。这本书旨在帮助读者掌握PL/SQL的基本概念、语法和高级特性,以便在实际...
12. **数据库对象的DDL操作**:学习如何在PL/SQL中创建、修改和删除数据库对象,如表、视图、索引和存储过程。 13. **PL/SQL与SQL的集成**:了解如何在PL/SQL中嵌入SQL语句,以及SQL语句如何与PL/SQL逻辑相互配合。...
4. 子程序与包:PL/SQL允许定义函数、过程和包,用于封装代码,提高可重用性。了解如何定义和调用这些子程序。 5. 异常处理:PL/SQL提供了一套完整的异常处理机制,学习者需要学会如何捕获和处理运行时错误。 三、...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,SQL(结构化查询语言)是与所有关系数据库进行交互的标准语言,而PL/SQL是Oracle数据库特有的编程语言,它扩展了SQL的功能,使得数据库管理、开发和维护...
根据提供的文件信息,我们可以推断出本书主要关注的是Oracle SQL 和 PL/SQL 的掌握与应用。下面将基于这些信息来生成相关的知识点。 ### Oracle SQL 和 PL/SQL 知识点 #### 一、Oracle SQL 概述 1. **定义**:...
4. **子程序**:PL/SQL支持函数和过程的创建,它们可以封装一系列的操作并在需要时调用,提高代码的复用性和可维护性。 5. **异常处理**:PL/SQL内置了异常处理机制,允许程序员预定义和捕获运行时错误,以优雅的...
包是PL/SQL中的高级特性,用于组织相关的过程、函数和其他对象。包分为包规范(PACKAGE SPECIFICATION)和包体(PACKAGE BODY)。包规范声明包的公共接口,包体实现这些接口。包可以隐藏内部实现,提高代码安全性。...
8. **存储过程和函数**:学习如何创建和调用存储过程和函数,以及它们在数据库应用程序中的作用。 9. **触发器**:理解触发器的工作原理,何时以及如何使用触发器来自动化数据库操作,如在数据更改前后的自动检查或...
- **子程序**:包括存储过程和函数,可以被多个程序调用。 - **触发器**:当数据库发生特定事件时自动执行的程序。 - **程序包**:集合了一系列相关的子程序、类型定义和其他PL/SQL元素,便于管理和复用。 **2.3 ...
共分为7部分(7个pdf文档): 第一部分:PL/SQL介绍及开发环境 ...2.PL/SQL开发和运行环境 3.跟踪和调试 第二部分:非对象功能 4.创建子程序和包 5.使用子程序和包 6.数据库触发器 7.数据库作业和文件输入输出
包是一种组织PL/SQL元素(如过程、函数和变量)的方式,可以提高代码的复用性和封装性。 5. **游标**:游标是处理单个结果集中的行的机制。在PL/SQL中,可以声明、打开、提取和关闭游标来逐行处理查询结果。 6. **...