db2 删除存储过程_关于数据库的存储过程

一个存储过程是一个已编译的程序,它可以执行SQL语句和存储在本地或远程db2的服务器。您可以从应用程序或命令行处理器调用存储过程。从客户端应用程序对存储过程的单个调用可以多次访问服务器上的数据库。
典型的存储过程包含两个或多个SQL语句,以及以宿主语言或SQL过程语句进行的一些操纵或逻辑处理。您可以从其他应用程序或从命令行调用存储过程。Db2提供了一些存储过程,但是您也可以创建自己的存储过程。
存储过程提供了通用的一段代码,该段代码仅编写一次,并在单个实例中维护,可以从几个不同的应用程序中调用该实例。宿主语言可以轻松地调用本地系统上存在的过程,而SQL可以调用远程系统上存在的存储过程。实际上,SQL过程的主要好处是可以将它们用于增强分布式应用程序的性能特征。使用存储过程,可以避免在较长的查询序列中通过网络传输作为中间结果一部分而获得的大量数据。
下图说明了不使用存储过程的应用程序的处理。客户端应用程序嵌入SQL语句,并针对每个语句分别与服务器通信。此应用程序设计导致网络流量和处理器成本增加。

ee5991c8d1600d30c7136667a145080a.png


下图说明了使用存储过程的应用程序的处理。由于在服务器上使用了存储过程,因此可以通过一次发送和接收操作来执行一系列SQL语句,从而减少了网络流量和处理这些语句的成本。

aacff877dc452ebac78b6be9834d3d70.png


存储过程对于执行以下至少一项操作的客户端/服务器应用程序很有用:

  • 执行多个远程SQL语句。远程SQL语句可以创建许多网络发送和接收操作,从而导致处理器成本增加。存储过程可以将应用程序的许多SQL语句封装为一条发给Db2服务器的消息,从而将网络流量减少到一系列SQL语句的单个发送和接收操作中。Db2表上的锁不跨网络传输保留,这减少了对服务器资源的争用。
  • 从动态SQL环境访问表是不可取的,在动态SQL环境中,正在运行的应用程序具有表特权。存储过程允许动态环境中的静态SQL授权。
  • 访问要为其保证安全性和完整性的主机变量。存储过程将SQL应用程序从工作站中删除,这阻止了工作站用户操纵敏感的SQL语句和主机变量的内容。
  • 创建一个行结果集以返回到客户端应用程序。


用嵌入式静态SQL编写的存储过程还具有以下其他优点:

  • 更好的性能,因为静态SQL是在预编译时准备的,并且对于生成访问计划(程序包)没有运行时开销。
  • 封装使程序员可以编写访问数据的应用程序,而无需了解数据库对象的详细信息。
  • 改进的安全性,因为访问特权封装在与存储过程关联的程序包中。您可以授予访问权限以运行从表中选择数据的存储过程,而无需向用户授予SELECT特权。


您可以创建以下类型的存储过程之一:

外部存储过程:用宿主语言编写的过程。

外部SQL程序:一个过程,其主体完全用SQL编写,但是像其他外部存储过程一样被创建,实现和执行。

本机SQL过程:具有过程主体的过程,该过程主体完全用SQL编写,并且通过发出单个SQL语句CREATE PROCEDURE创建。本机SQL过程没有关联的外部应用程序。
Db2还提供了一组存储过程,您可以在应用程序中调用这些存储过程来执行许多实用程序,应用程序编程和性能管理功能。这些过程称为 提供的存储过程。通常,您在安装或迁移期间创建这些过程。

  • 存储过程参数
    您可以使用参数在存储过程和调用应用程序之间传递信息。应用程序在SQL CALL语句中传递必需的参数。可选地,应用程序还可以在每个参数中包含一个指标变量,以允许使用空值或传递较大的输出参数值。
  • 简单存储过程的示例
    当在工作站上运行的应用程序调用 Db2服务器上的存储过程时,该存储过程将根据从应用程序接收的信息来更新表。
  • SQL过程
    SQL过程是仅包含SQL语句的存储过程。
  • 自治过程
    自治过程在其自己的工作单元下执行,与调用程序分开,并在完成时提交而不提交调用程序的工作。
  • 外部存储过程
    的外部存储过程是写在一个宿主语言,可以包含SQL语句的过程。外部过程的源代码与定义是分开的。
  • SQL过程和外部过程之间的差异SQL过程
    完全用SQL语句编写。外部过程以宿主语言编写,并且可以包含SQL语句。您可以使用SQL CALL语句来调用两种类型的过程。但是,您应该考虑行为和准备方面的几个重要差异。
  • 存储过程中的COMMIT和ROLLBACK语句在存储过程中
    发出COMMIT或ROLLBACK语句时, Db2提交或回滚工作单元内的所有更改。对于未定义为自治的过程,已落实或回退的更改包括客户端应用程序在调用存储过程之前所做的更改以及Db2会执行存储过程所做的更改。对于自治过程,已提交或回退的更改仅包括存储过程的工作单元完成的工作。
  • 存储过程中的
    特殊寄存器您可以在存储过程中使用所有特殊寄存器。但是,您只能修改其中一些特殊寄存器。存储过程完成后, Db2将所有特殊寄存器恢复为调用前所具有的值
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值