`

10、存储过程

 
阅读更多

存储过程

存储过程是一种命名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中记录的存储过程

SQL> create procedure insert_emp as

2 begin

3 insert into emp(empno,ename,job,mgr,sal,comm,deptno)

4 values('7777','redarmy','teacher','7369',9000,1000,20);

5 commit;

6 end insert_emp;

7 /

2、 调用存储过程

SQL> set serveroutput on;

SQL> begin

2 insert_emp;

3 end;

4 /

3、 修改存储过程

SQL> create or replace procedure insert_emp as //修改时只需加 or replace就可以了 里边的存储过程就可以修改了

2 begin

3 insert into emp(empno,ename,job,mgr,sal,comm,deptno)

4 values('7777','redarmy','teacher','7369',9000,1000,20);

5 commit;

6 end insert_emp;

7

8 /

4、 参数

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

1、 in参数

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

案例:

SQL> create or replace procedure insert_emp(

2 cempno in number,

3 cename in varchar2,

4 cjob in varchar2,

5 cmgr in number,

6 chiredate in date,

7 csal in number,

8 ccomm in number,

9 cdeptno in number

10 ) as

11 begin

12 insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)

13 values(cempno,cename,cjob,cmgr,chiredate,csal,ccomm,cdeptno);

14 end insert_emp;

15 /

Procedure created

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

1、1 名称表示法

语法如下:

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

SQL> set serveroutput on;

SQL> begin

2 insert_emp(cempno=>7377,cename=>'mjjj',cjob=>'stu',cmgr=>7777,chiredate=>to_date('2011-01-01','YYYY-MM-dd'),csal=>5000,ccomm=>1000,cdeptno=>20);

3 end;

4 /

1、2 位置表示法

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

SQL> set serveroutput on;

SQL> begin

2 insert_emp(3333,'mjjj','stu',7777,to_date('2011-01-01','YYYY-MM-dd'),5000,1000,20);

3 end;

4 /

1、3 混合表示法

SQL> set serveroutput on;

SQL> begin

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

3 end;

4 /

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

2、 out参数

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

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

SQL> create or replace procedure emp_select(cempno in number,

2 cename out emp.ename%type,

3 csal out emp.sal%type

4 ) is

5 begin

6 select ename,sal into cename,csal from emp where empno=cempno;

7 exception

8 when NO_DATA_FOUND then

9 cename:='NULL';

10 csal:=0;

11 end emp_select;

12 /

Procedure created

调用存储过程:

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

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

SQL> variable ename varchar2(20); //绑定参数的声明

SQL> variable sal number;

SQL> begin

2 emp_select('7777',:ename,:sal); //执行存储过程

3 end;

4 /

PL/SQL procedure successfully completed

ename

---------

redarmy

sal

---------

9000

SQL> print ename; //打印相应的参数

ename

---------

redarmy

SQL> print sal; //打印相应的参数

sal

---------

9000

3、 in out参数

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

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

分享到:
评论

相关推荐

    实验10 存储过程.pdf

    实验10 存储过程 在本实验中,我们将学习如何创建和执行存储过程,掌握T-SQL流控制语句,并了解存储过程的管理和维护。通过实验,我们将学会如何创建简单存储过程、带参数的存储过程和带输出参数的存储过程。 一、...

    实验10存储过程.doc

    实验10存储过程主要涉及了SQL中的存储过程创建、执行、管理及维护,以及如何使用T-SQL流控制语句。存储过程是预编译的SQL语句集合,可以提高数据库操作的效率并减少网络流量。 一、实验目标 1. 掌握T-SQL流控制语句...

    10存储过程触发器(1)共89页.pdf.zip

    在"10存储过程触发器(1)共89页.pdf.zip"这个压缩包中,可能包含了关于如何创建、调用存储过程和触发器,以及它们在实际应用中的示例和最佳实践的详细讲解。文件列表中提到的"赚钱项目"可能指的是利用学习这些技术来...

    oracle资源有关于oracle10存储过程

    Oracle 10g 存储过程是数据库管理系统中一种重要的编程元素,主要用于封装一系列的数据库操作,提升系统性能,确保数据安全。以下是关于存储过程的详细说明: 1. **为什么要使用存储过程**: - 预编译与优化:存储...

    MySQL从入门到实战学习教程之10存储过程.pptx

    MySQL存储过程详解 MySQL存储过程是MySQL中常用的数据库对象,它是一组为了完成特定功能的预编译的SQL语句集合。存储过程是一种命名的程序块,在第一次使用经过编译之后,再次调用时不用再编译,因此执行效率较高。...

    SQL存储过程SQL存储过程SQL存储过程

    SQL存储过程详解 SQL存储过程是数据库管理系统中的一种重要组件,它是一组为了完成特定功能的 SQL 语句,集经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执行它。本文将对 SQL存储过程进行详细...

    MySQL创建存储过程批量插入10万条数据

    MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...

    SQL存储过程试题及答案

    SQL存储过程试题及答案 SQL存储过程是数据库中的一种程序单元,能够完成特定的数据库操作。今天,我们将讨论三道关于SQL存储过程的试题,这些试题涵盖了存储过程的创建、调用和参数传递等方面。 1. 创建分数存储...

    存储过程文档--mysql

    存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...

    实验9 存储过程的创建和使用

    实验9主要围绕存储过程的创建、使用、查看、修改和删除等核心概念展开,这是数据库管理系统中的重要组成部分,尤其在SQL Server中具有广泛的应用。存储过程是一组预先编写的SQL语句,它允许用户像调用函数一样重复...

    数据库查询的存储过程

    数据库查询的存储过程 数据库查询的存储过程是数据库管理系统中一种非常重要的概念。它可以将多个SQL语句组合成一个单元,提高数据库的查询效率和性能。 存储过程的优点: 1. 可以在单个存储过程中执行一系列SQL...

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    根据提供的文件内容,本篇实验报告主要围绕MySQL数据库中存储过程和函数的应用,涵盖了创建存储过程、函数、游标以及异常处理等高级特性。下面将详细解析报告中的每个知识点。 1. 创建存储过程 存储过程是一种在...

    oracle10g存储过程语法

    Oracle 10g 存储过程是数据库管理系统中用于封装一组数据库操作的程序单元,它可以接受输入参数,返回输出结果,并且可以包含复杂的逻辑控制结构。存储过程在数据库应用中扮演着重要的角色,它们能够提高性能,减少...

    学习sql存储过程的心得

    10. **优化**:通过合理设计存储过程,比如使用索引、避免全表扫描、减少数据类型转换等,可以进一步提升执行效率。 11. **版本管理**:在大型系统中,存储过程的版本管理很重要,可以使用`ALTER PROCEDURE`来更新...

    解密SQL Server2000存储过程(可以选择存储过程查询)

    存储过程可以分为系统存储过程、用户自定义存储过程和扩展存储过程。系统存储过程由SQL Server提供,用于管理数据库和服务器;用户自定义存储过程则是由数据库管理员或开发者创建,根据业务需求定制;扩展存储过程...

    存储过程初学实例

    ### 存储过程初学实例知识点详解 #### 一、存储过程概述 存储过程是一种预编译的SQL语句集合,它可以作为一个独立的数据库对象,也可以被用户的应用程序调用以实现特定的功能。存储过程支持参数输入输出、返回单个...

    存储过过程介绍,简单的存储过程

    根据给定的信息,本文将详细介绍存储过程的基本概念及其在数据库管理中的应用,特别是简单存储过程的设计与实现。 ### 存储过程概述 存储过程是一种预编译的SQL语句集合,它存储在数据库服务器上,并可以作为一个...

    C#如何写删除图书存储过程

    在数据库管理中,存储过程(Stored Procedure)是一种预编译的SQL代码集合,可以在数据库服务器上执行,以完成特定的任务,比如数据的增删改查。在本例中,我们关注的是如何在C#中调用一个存储过程来实现图书的删除...

    C#中调用Oracle存储过程

    ### C#中调用Oracle存储过程 #### 一、存储过程简介 存储过程是一段预编译并存储在数据库中的PL/SQL代码块,用于执行特定任务。它们通常包含流程控制语句和SQL语句,旨在提高代码复用性和简化应用程序开发流程。...

    DB2存储过程开发权威指南.存储过程学习速成教程

    10. **版本控制与重用**:在开发过程中,可能需要修改存储过程。DB2支持存储过程的版本控制,允许你创建、替换和回滚到先前的版本,确保代码的稳定性和可维护性。 通过深入学习和实践上述知识点,你可以成为一名...

Global site tag (gtag.js) - Google Analytics