子程序是指被命名的PL/SQL块,这些块可以带有参数,可以在不同应用中多次调用,PL/SQL有两种类型子程序:过程和函数,其中过程是用于执行特定操作,而函数是用于返回特定数据。
一、开发过程
过程用于执行特定操作,如果在应用程序中经常需要执行特定的操作,可以基于操作建立一个过程,通过使用过程,不仅可以简化客户端程序的开发和维护,而且还可以提高应用程序的性能,语法如下:
create [or replace]procedure procedure_name
(argument1[mode] dateType1,argument2[mode] dateType2........)
IS/AS
PL/SQL block
如上所示:procedure_name用于指定过程名称,argument1、argument2用于指定过程的参数,mode用于指定参数模式,dateType1、dateType2用于指定过程参数类型;IS/AS用于表示开始一个PL/SQL块。当指定参数类型时不能指定参数长度,另外当建立过程时即可以指定输入参数(IN),也可以指定输出参数(OUT),又可以指定输入输出参数(INOUT),通过在过程中使用输入参数,可以将应用程序的数据传递到执行部分,通过使用过程中的输出参数,可以将执行部分的数据传递到应用程序中。定义子程序的参数时,如果不指定参数模式,则默认为输入参数,如果定义输出参数,那么需要指定OUT关键字,如果要定义输入输出参数,则需要指定INOUT关键字。
1、建立过程:不带参数
示例如下:
create or replace procedure procedure_test1
is
begin
dbms_output.put_line(to_char(sysdate,'YYYY-MM-DD'));
end;
/
建立了过程procedure_test1后,就可以调用该过程了。在SQL*Plus环境中调用过程有两种方法,一种是使用execute(简写为exe)命令,另一种是使用call命令,如下:
示例一:使用execute命令调用过程
set serveroutput on;
execute procedure_test1;
示例二:使用call命令调用过程
SQL>set serveroutput on;
SQL>call procedure_test1();
2、建立过程:带有IN参数
示例如下:
create or replace procedure procedure_in
(v_name varchar2,v_age varchar2,v_address varchar2,v_id number)
is
begin
insert into cip_temps values(v_name,v_age,v_address,v_id);
end;
/
在创建过程时,如果参数指定了参数名和参数类型,则就不必定义其中的参数名和参数类型。
运用exec、call调用创建完毕的procedure_insert过程,代码如下:
SQL>exec procedure_in('888','888','888',888);
SQL>exec procedure_in('999','999','999',999);
3、建立过程:带有OUT参数
过程不仅可以用于执行特定操作,也可以用于输出数据,在过程中用于输出数据时使用OUT或INOUT参数完成的。
示例如下:
CREATE OR REPLACE procedure procedure_out
(v_name out varchar2,v_age out varchar2,v_address out varchar2,v_id number,error out varchar2)
is
begin
select name,age,address into v_name,v_age,v_address from cip_temps where id=v_id;
exception
when no_data_found then
error:='1';
end;
/
注意:
在创建过程时如果出现错误,但是没有标明是哪里出的错误,可以用"show error"命令查看出错的位置
如上所示:当在应用程序中调用该过程时,必须要定义变量接受输出参数的数据,下面在SQL*Plus中调用过程示例:
SQL> var name varchar2(10)
SQL> var age varchar2(10)
SQL> var address varchar2(10)
SQL> var error varchar2(10)
SQL> exec procedure_out(:name,:age,:address,888,:error);
SQL> print name age address error;
SQL> print error;
4、建立过程:带有INOUT参数
定义过程时,不仅可以定义IN和OUT参数,也可以指定IN OUT参数,IN OUT参数为输入输出参数,当使用这种参数时,在调用过程之前需要通过变量给该参数传递数据,在调用结束之后,oracle会通过该变量将过程结果传递给应用程序,示例如下:
create or replace procedure procedure_inout
(num1 in out number,num2 in out number)
is
v1 number;
v2 number;
begin
v1:=num1/num2;
v2:=num1+num2;
num1:=v1;
num2:=v2;
end;
/
调用过程
SQL> var num1 number
SQL> var num2 number
SQL> exec :num1:=12
SQL> exec :num2:=12
SQL> exec procedure_inout(:num1,:num2);
SQL> print num1 num2;
二、开发函数
见<Oracle_学习开发子程序_函数>
分享到:
相关推荐
Oracle PL/SQL 子程序和包的...在 PL/SQL 中,子程序可以提高代码的可重用性和可维护性,并且能够简化程序的开发和维护过程。通过本章的学习,可以掌握创建、执行和删除子程序的方法,并且了解子程序参数的使用方法。
以及Oracle SQL Developer,一个图形化的数据库管理和开发工具。客户端还包括oci.dll和oraociei12.dll等动态链接库,它们实现了Oracle数据库的API,使得开发者可以编写连接Oracle的应用程序。 3. Oracle SQL Oracle...
总的来说,《Oracle_database_11g_SQL开发指南》是一本全面且实用的教程,无论你是刚接触Oracle的新手,还是希望通过学习深化数据库知识的专业人士,都能从中受益。配合提供的PDF文档,你可以随时随地学习和查阅,...
1. **Oracle SQL**:学习和掌握Oracle特定的SQL语法,如PL/SQL过程语言,用于创建存储过程、函数和触发器等复杂逻辑。 2. **数据库设计**:理解如何根据BBS论坛的需求进行表结构设计,包括主键、外键、索引等,以...
- **过程(PROCEDURE)**:无返回值的子程序,可以有参数输入和输出。 - **函数(FUNCTION)**:返回单个值的子程序,也可以有参数。 - **包(PACKAGE)**:将相关的过程和函数组织在一起,提供模块化和封装。 6...
在Oracle中,子程序主要包括存储过程和函数,它们都是可重复使用的代码块,可以提高开发效率并优化数据库性能。 **一、存储过程** 存储过程是一种预编译的SQL和PL/SQL代码集合,它可以在数据库中被创建、调用和执行...
9. **子程序和包**:存储过程和函数是可重用的代码单元,用于执行特定任务。包是包含相关过程、函数和变量的集合,提供模块化和封装。 10. **游标变量和记录类型**:游标变量用于存储游标的当前状态,而记录类型...
在IT行业中,数据库管理和Java Web开发是两个至关重要的领域,特别是在面试过程中,对这些技能的深入理解和应用常常是考察的重点。本压缩包“shujuku.rar”包含了与Oracle数据库、Java Web开发以及面试相关的资源,...
5. **子程序**:包括过程(PROCEDURE)和函数(FUNCTION),它们可以封装代码并多次调用,提高代码复用性。函数可返回一个值,而过程不返回。 6. **游标**:游标用于处理SQL查询结果集,允许逐行操作数据,常用于...
Oracle SQL是用于查询、操作和管理Oracle数据库的标准结构化查询语言,而PL/SQL是Oracle公司开发的一种过程式编程语言,它与SQL紧密集成,用于编写数据库应用程序。 1. Oracle SQL基础:Oracle SQL遵循SQL标准,但...
Oracle PL/SQL是Oracle数据库系统中的重要组成部分,用于开发存储过程、函数、触发器等数据库对象,以及执行复杂的SQL操作。以下是对Oracle PL/SQL及其相关知识点的详细说明: 1. **Oracle数据库基础**:Oracle...
### ORACLE_PlSql-甲骨文学习笔记 #### 一、创建表 ##### 创建表一 ```sql CREATE TABLE TABLE_NAME ( AAA INTEGER CONSTRAINT PK_TABLE_NAME PRIMARY KEY, BBB VARCHAR2(10) NOT NULL, DOB DATE, CCC VARCHAR...
描述中提到“Oracle,PL/SQL操作手册,主要介绍语法等”,意味着这份资料可能详尽地涵盖了PLSQL的基本语法、数据类型、变量声明、控制结构(如IF-THEN-ELSE、CASE语句)、循环(WHILE、FOR循环)、子程序(过程和函数...
本文将深入探讨Java与Oracle的结合,特别是PL/SQL在Java应用程序中的应用,基于提供的压缩包文件“java-oracle中几十个实用的PLSQL.rar”。 PL/SQL(Procedural Language/Structured Query Language)是Oracle...
根据提供的文件信息,标题、描述和标签均指向“Oracle_9i_AS_Portal_宝典1.pdf”,这表明文档主要...通过对上述知识点的学习和掌握,可以更好地利用Oracle 9i AS Portal 构建出高效、安全且用户体验良好的门户系统。
总之,Oracle子程序和程序包是数据库开发中不可或缺的工具,理解并熟练运用它们能够显著提升你在Oracle数据库领域的专业技能。通过深入学习和实践“8-子程序和程序包”中的案例,你将能够更好地掌握这些概念,并在...
本文将详细介绍Oracle存储过程最基本的开发规范,特别适合Oracle初学者学习与参考。 #### 二、注释规范 1. **存储过程注释**:每个存储过程都需要包含创建日期、创建人、更新日期、更新人等信息。此外,还需要记录...
3. **子查询**:Oracle SQL中的子查询允许在查询中嵌套查询,用于比较、筛选或者组合复杂的数据。 4. **联接操作**:Oracle支持多种类型的联接,包括内连接(INNER JOIN)、外连接(LEFT JOIN, RIGHT JOIN, FULL JOIN)...