`
z_xiaofei168
  • 浏览: 201040 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle之存储过程(八)

阅读更多

oracle之存储过程(八)

       存储过程是一种命名pl/sql程序块,它可以被赋予参数,存储在数据库中,可以被用户调用.由于存储过程是已编译好的代码,所以在调用的时候不必再次编译代码,从而提高程序的运行效率。另外存储过程可以实现程序的模块化设计.

 

1、  创建存储过程

语法:

  Create [or replace] procedure procedure_name

 [ (parameter[{in|in out}]) data_type

  (parameter[{in|in out}]) data_type

  ……

 ]

{ is|as}

 Decoration section

Begin

   Executable section;

Exception

   Exception handlers;

End;

Procedure_name存储过程的名称

Parameter 参数

In 向存储过程传递参数

Out:从存储过程返回参数

In out:传递和返回参数

Data_type:参数的类型  不能够指明长度

As|is后声明的变量主要过程体内,且不能加declare语句。

 

//创建一个插入emp中记录的存储过程

 

create procedure insert_emp as begin insert into emp(empno,ename,job,mgr,sal,comm,deptno) values('7777','redarmy','teacher','7369',9000,1000,20); commit; end insert_emp; /


 

 

 

 

2、  调用存储过程

  set serveroutput on; begin insert_emp; end; /



 

 

 

3、  修改存储过程

 

 

create or replace procedure insert_emp as begin insert into emp(empno,ename,job,mgr,sal,comm,deptno) values('7777','redarmy','teacher','7369',9000,1000,20); commit; end insert_emp; /


 

4、  参数

Oracle中有三种参数模型 in out in out

1、  in参数

该类型的参数值有调用者传入,并且只能被存储过程读取,也是默认格式.

案例:

 

create or replace procedure insert_emp( cempno in number, cename in varchar2, cjob in varchar2, cmgr in number, chiredate in date, csal in number, ccomm in number, cdeptno in number ) as begin insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(cempno,cename,cjob,cmgr,chiredate,csal,ccomm,cdeptno); end insert_emp; / Procedure created


 

 

上面创建的存储过程需要出入参数,oralce有如下三种方式传入参数

1、1     名称表示法

语法如下:

  参数名称=>参数值;多个之间用逗号隔开

set serveroutput on; begin insert_emp(cempno=>1111,cename=>'x_xiaofei168',cjob=>'stu',cmgr=>7777,chiredate=>to_date('2011-01-01','YYYY-MM-dd'),csal=>5000,ccomm=>1000,cdeptno=>20); end; /

 

 


 

 

1、2     位置表示法

当参数比较多时,名称表示法可能会比较长,为克服名称表示法的弊端,可以采用位置表示法,注意参数一定要对应。

 

set serveroutput on; begin insert_emp(3333,'mjjj','stu',7777,to_date('2011-01-01','YYYY-MM-dd'),5000,1000,20); end; /


 

 

 

1、3     混合表示法

set serveroutput on; begin insert_emp(9999,cename=>'mjjj',cjob=>'stu',cmgr=>7777,chiredate=>to_date('2011-01-01','YYYY-MM-dd'),csal=>5000,ccomm=>1000,cdeptno=>20); end; /

 

 


 

注意:当用户使用的混合表示法时,分界线之前必须一致,分界线之后必须一致,并且不能穿插。

 

2、  out参数

    该类型的参数值是有存储过程写入.out类型的参数适用于存储过程向调用者返回多条信息的情况。

//创建一个根据员工编号查询员工名称及薪资存储过程

 

create or replace procedure emp_select(cempno in number, cename out emp.ename%type, csal out emp.sal%type ) is begin select ename,sal into cename,csal from emp where empno=cempno; exception when NO_DATA_FOUND then cename:='NULL'; csal:=0; end emp_select; / Procedure created


 

  调用存储过程:

    out输出的参数是返回值,也就说在调用存储过程的时候必须有提供能够接受返回值的变量。

在这里我们需要使用variable命令绑定参数

 

variable ename varchar2(20); variable sal number; begin emp_select('7777',:ename,:sal); //执行存储过程 end; / PL/SQL procedure successfully completed ename --------- z_xiaofei168 sal --------- 9000 SQL> print ename; //打印相应的参数 ename --------- z_ xiaofei168 SQL> print sal; //打印相应的参数 sal --------- 9000

 

 


 

 

3、  in out参数

in参数可以接收一个值,但是不能在存储过程中修改这个值,而对于out参数,它在调用过程时为空,在过程执行中将为为这个参数指定一个值,并在执行后返回.

in out参数同时具有了in参数和out参数的特性,在过程中可以读取和写入该类型的参数。

 

2
0
分享到:
评论

相关推荐

    oracle存储过程学习经典入门

    本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...

    oracle存储过程解锁

    以下是对“oracle存储过程解锁”这一主题的深入解析。 ### 标题:“oracle存储过程解锁” #### 解析: 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL代码块,用于执行复杂的业务逻辑或数据处理...

    Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...

    oracle 存储过程导出excel

    oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel

    Oracle存储过程返回结果集

    在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`参数则允许过程向调用者返回数据。而`SYS_REFCURSOR`是Oracle提供的一种特殊类型,它允许存储过程动态地打开一个游标(即结果集)并将其作为`OUT`参数返回。 ...

    oracle 事务 回滚 存储过程

    ### Oracle存储过程 存储过程是在数据库中预编译的一组SQL语句,用于执行复杂的业务逻辑或数据操作。它们可以接受输入参数,执行一系列数据库操作,并返回结果。在Oracle中,存储过程使用PL/SQL编写,可以在数据库...

    oracle通过存储过程POST方式访问接口

    总的来说,"Oracle通过存储过程POST方式访问接口"涉及到数据库编程、网络通信和安全性等多个方面,需要综合运用PL/SQL和Oracle的网络工具。通过学习和实践,你可以构建出高效、安全的接口交互方案。

    delphi调用Oracle的存储过程

    #### Oracle存储过程创建 首先,我们需要在Oracle数据库中创建一个存储过程。以下是一个示例存储过程`pkg_test`的创建脚本: ```sql CREATE OR REPLACE PACKAGE pkg_test AS TYPE myrctype IS REF CURSOR; ...

    oracle分页存储过程

    oracle分页存储过程,oracle分页存储过程

    使用Spring的JdbcTemplate调用Oracle的存储过程

    使用Spring的JdbcTemplate调用Oracle的存储过程

    oracle存储过程unwrap解密工具.zip

    Oracle存储过程unwrap解密工具主要用于处理Oracle数据库中的加密存储过程。在Oracle数据库系统中,为了保护敏感代码或数据,开发人员有时会选择对存储过程进行加密。然而,当需要查看、调试或恢复这些加密的存储过程...

    oracle存储过程加密破解

    oracle存储过程加密破解 0

    oracle 存储过程 函数 dblink

    ### Oracle存储过程、函数与DBLink详解 #### 一、Oracle存储过程简介 在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程...

    帆软报表Oracle存储过程解决storeParameter1参数试用插件

    总结起来,"帆软报表Oracle存储过程解决storeParameter1参数试用插件"主要是针对在调用无参数Oracle存储过程时出现的异常问题提供的一种解决方案。通过安装并配置这个插件,用户可以顺利地在帆软报表中调用不包含...

    oracle 存储过程示例

    oracle 存储过程示例oracle 存储过程示例oracle 存储过程示例oracle 存储过程示例oracle 存储过程示例oracle 存储过程示例oracle 存储过程示例oracle 存储过程示例

    oracle的存储过程如何返回结果集

    ### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...

    hibernate query调用oracle存储过程

    以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....

    oracle 存储过程批量提交

    ### Oracle存储过程批量提交知识点详解 在Oracle数据库中,存储过程是一种重要的数据库对象,它可以包含一系列SQL语句和控制流语句,用于实现复杂的业务逻辑处理。存储过程不仅可以提高应用程序性能,还可以确保...

Global site tag (gtag.js) - Google Analytics