`
izuoyan
  • 浏览: 9221905 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

什么是存储过程?

阅读更多
一 存储过程介绍
存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化
<clk>后存储在<nobr onmousemove="kwM(3);" onmouseout="kwL(event, this);" onmouseover="kwE(event,3, this);" oncontextmenu="return false;" target="_1" onclick="return kwC(event,3)" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="clickeyekey3">数据</nobr>库服务器中,使用时只要调用即可。在ORACLE中,若干个 </clk>
<clk>有联系的过程可以组合在一起构成<nobr onmousemove="kwM(0);" onmouseout="kwL(event, this);" onmouseover="kwE(event,0, this);" oncontextmenu="return false;" target="_1" onclick="return kwC(event,0)" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="clickeyekey0">程序</nobr>包。 </clk>
使用存储过程有以下的优点:
* 存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可
<clk>以用流<nobr onmousemove="kwM(12);" onmouseout="kwL(event, this);" onmouseover="kwE(event,12, this);" oncontextmenu="return false;" target="_1" onclick="return kwC(event,12)" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="clickeyekey12">控制</nobr>语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 </clk>
运算。
* 可保证数据的安全性和完整性。
# 通过存储过程可以使没有权限的用户在控制之下间接地存取数据
库,从而保证数据的安全。
# 通过存储过程可以使相关的动作在一起发生,从而可以维护数据
库的完整性。
* 再运行存储过程前,数据库已对其进行了语法和句法分析,并给出
了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。
<clk>由于执行SQL语句的大部分<nobr onmousemove="kwM(2);" onmouseout="kwL(event, this);" onmouseover="kwE(event,2, this);" oncontextmenu="return false;" target="_1" onclick="return kwC(event,2)" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="clickeyekey2">工作</nobr>已经完成,所以存储过程能以极快的速度执 </clk>
行。
<clk>* 可以降低<nobr onmousemove="kwM(1);" onmouseout="kwL(event, this);" onmouseover="kwE(event,1, this);" oncontextmenu="return false;" target="_1" onclick="return kwC(event,1)" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="clickeyekey1">网络</nobr>的通信量。 </clk>
* 使体现企业规则的运算程序放入数据库服务器中,以便:
# 集中控制。
<clk># 当<nobr onmousemove="kwM(10);" onmouseout="kwL(event, this);" onmouseover="kwE(event,10, this);" oncontextmenu="return false;" target="_1" onclick="return kwC(event,10)" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="clickeyekey10">企业</nobr>规则发生变化时在服务器中改变存储过程即可,无须修改 </clk>
任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运
算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序
工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的
运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可
以了,应用程序无须任何变化。
不同数据库存储过程的写法不一,在后面的讲座中将分别介绍ORACLE
和SYBASE存储过程的用法。

二 ORACLE 的存储过程
ORACLE 创建存储过程的语法为:
create [or replace] procedure 过程名
参数1 [in|out|in out] 数据类型
[,参数2 [in|out|in out] 数据类型]...
{is|as} pl/sql 语句
下面举例说明ORACLE数据库存储过程的写法和用法。
可以建立一个存储过程,每当用户修改数据库的重要数据时,即把
用户的用户名、掌诤筒僮骼嘈图锹枷吕矗?nbsp;
create procedure update_log is
begin
insert into update_log_tab(use_name,update_date,operation)
values(user,sysdate,'update'
end;
可以在恰当的位置调用这个存储过程来记录用户对表的修改。例如下面在
表sal_comm上建立一个修改触发器,每当用户修改此表后,用户的名称、修改
时间和操作即被记录在了表update_log_tab中:
create trigger audit_update
after update on sal_comm
for each row
begin
update_log
end
--

三 Sybase的存储过程
尽管Sybase存储过程的功能和写法与ORACLE类似,但他们之间还是
有一定的差别。下面讲述SYBASE的存储过程。
<clk>SYBASE可以用CREATE PROCedure<nobr onmousemove="kwM(6);" onmouseout="kwL(event, this);" onmouseover="kwE(event,6, this);" oncontextmenu="return false;" target="_1" onclick="return kwC(event,6)" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="clickeyekey6">命令</nobr>生成存储过程: </clk>
CREATE PROCedure 存储过程名 [;number]
[[(] @parameter_name datatype [=default] [OUTput]
[, @parameter_name datatype [=default] [OUTput]]...[)]]
[WITH RECOMPILE]
AS SQL_statements
下面是一个查询作者编码、名称和生日的存储过程:
create proc p_auths @author_code varchar(10)
as
select author_code, name, birthdate
from auths
where author_code=@author_code
下面执行过程p_auths:
p_auths @author_code=A00001
在CREATE PROC语句中,可以为参数赋缺省值,该值可以是任何常量。
当用户不提供参数值时,该值便作为参数值提供给过程。
分享到:
评论

相关推荐

    存储过程文档--mysql

    什么是存储过程? 存储过程是一个预先写好的 SQL 语句集合,通过存储过程,可以将复杂的操作封装起来,并与数据库提供的事务处理结合使用。存储过程可以重复使用,减少数据库开发人员的工作量,并提高安全性。 ...

    oracle存储过程-帮助文档

    1. **什么是存储过程?** 存储过程是预编译的SQL和PL/SQL代码集合,存储在Oracle数据库中,可以由用户或应用程序按需调用执行。它们提高了数据库性能,因为数据库只需解析和优化存储过程一次,而非每次调用时都进行...

    MySQL存储过程综述及如何使用Navicat创建存储过程

    一、什么是MySQL存储过程?   在大型项目中,有时候需要重复执行能够完成特定功能的SQL语句集,而MySQL为我们提供了存储过程的概念,存储过程是数据库中的一个重要对象,它是存储在数据库中的一组完成特定功能的...

    第15章_存储过程与函数.docx

    什么是存储过程? 存储过程是指预先编译的一组 SQL 语句集,将其存储在 MySQL 服务器上。客户端可以简单地调用存储过程,服务器端将自动执行预先存储的 SQL 语句。存储过程可以简化操作,提高 SQL 语句的重用性,...

    plsql之存储过程

    1. **什么是存储过程?** 存储过程是一组预先编译的PLSQL语句,用于在数据库中执行特定任务。它们被存储在数据库中,可以在需要的时候调用,减少了网络流量,提高了应用程序的性能和安全性。存储过程可以包含变量...

    100个C#面试题

    1.维护数据库的完整性、一致性、你喜欢用触发器还是...5.什么是存储过程?有什么优点? 2 6.什么是触发器? 3 7.简单介绍下ADO.NET和ADO主要有什么改进? 3 8.如何把一个array复制到arrayist里 3 9.概述三层结构体系 4

    Oracle的存储过程

    #### 一、什么是存储过程? 在Oracle数据库中,**存储过程**是一种数据库对象,它由一组SQL语句和过程性控制流语句组成,并且存储在数据库服务器上。用户可以通过调用存储过程的名字来执行这些预编译的代码。 - **...

    SqlServer存储过程及调试指南

    1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作数据库中的重要对象,对于设计良好的数据库应用程序...

    DB2存储过程语法大全

    **什么是存储过程?** 存储过程是一种可以在服务器端执行的应用程序,它可以被视为客户端的扩展部分。用户自定义的存储过程可以通过`CREATE PROCEDURE`语句注册到DB2数据库中的`SYSCAT.ROUTINES`表。 **为何使用...

    ORACLE的存储过程的异步调用

    ORACLE 存储过程的异步调用 本文讨论了 ORACLE 存储过程的异步调用方法,旨在解决客户端长时间等待存储过程执行的问题。主要思路是使用 DBMS_JOB 包将主处理存储过程作为任务提交到任务队列中,并通过 DBMS_PIPE 包...

    数据库的存储过程

    数据库的存储过程是数据库管理系统提供的一种预编译的SQL语句集合,它是数据库中的一个对象,可以被多次调用,从而提高数据访问的效率。在本文中,我们将深入探讨存储过程的基本理念、语法以及常见的实现方式,特别...

    oracle存储过程解锁

    在IT领域,尤其是在数据库管理与优化中,存储过程的解锁是一项关键技能,尤其对于Oracle数据库而言。当存储过程被锁定时,可能会影响系统的性能和稳定性,因此掌握如何解锁存储过程至关重要。以下是对“oracle存储...

    Informatica调用存储过程图文流程

    什么是存储过程 存储过程(Stored Procedure)是一组为了完成特定功能的 SQL 语句集合,存储在数据库中,以便在需要时重复使用。存储过程可以根据需要执行不同的操作,例如插入、更新、删除数据等。使用存储过程...

    SAP HANA 中调试存储过程

    SAP HANA是一个高性能的内存数据库系统,它提供了一系列功能强大的工具来进行数据分析、应用开发、存储过程编写等操作。其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了...

    vs中断点测试sqlserver的存储过程

    在IT领域,特别是软件开发与数据库管理中,对SQL Server的存储过程进行中断点测试是一项重要的技能,它有助于开发者深入理解代码执行流程,及时发现并修复潜在错误。下面,我们将详细探讨如何在Visual Studio(以下...

    db2 存储过程语法与实例

    DB2存储过程是一种在数据库管理系统中预编译的SQL代码集合,它允许开发人员封装复杂的业务逻辑和数据处理操作,并可以被多次调用。DB2作为一款强大的关系型数据库管理系统,其存储过程功能强大,提高了应用程序的...

    mysql存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...

    oracle存储过程学习经典入门

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

    sqlserver存储过程解密工具

    SQL Server存储过程是一种预编译的SQL代码集合,它们允许数据库开发者封装复杂的业务逻辑和数据操作,提高数据库应用的性能和可维护性。然而,由于存储过程的源代码通常是不可见的,对于需要查看或修改这些过程的...

Global site tag (gtag.js) - Google Analytics