liulanghan110 发表于 2013-1-25 21:42:39

db2存储过程简介

DB2 SQL Procedural Language(SQL PL)是 SQL Persistent Stored Module 语言标准的一个子集。该标准结合了 SQL 访问数据的方便性和编程语言的流控制。通过 SQL PL 当前的语句集合和语言特性,可以用 SQL 开发综合的、高级的程序,例如函数、存储过程和触发器。这样便可以将业务逻辑封装到易于维护的数据库对象中,从而提高数据库应用程序的性能。
SQL过程和SQL 函数是使用不同技术实现的。SQL 过程中的查询是单独编译的,每个查询都成为包中的一个节。编译是在过程创建时进行的,直到重新创建过程或者直到重新绑定其相关的包时才重新编译这些查询。
另一方面,SQL函数中的查询是一起编译的,就好像函数体是一个查询一样。每当编译一条使用SQL函数的语句时,也会对SQL函数进行编译。
与SQL过程中所发生的情况不同,SQL函数中的过程语句与数据流语句是在同一个层中执行的。因此,每当控制从过程语句流向数据流语句或相反时,并不发生上下文切换。
因为存在这些区别,所以当给定的过程代码段作为函数实现时的执行速度通常比作为过程实现时要快。但是,当然了,有一个小问题。函数只能包含那些不会改变数据库状态的语句(诸如INSERT、UPDATE或DELETE语句是不允许的)。并且只允许完整SQL PL语言的子集出现在SQL函数中(不能是CALL语句、游标和条件处理)
在存储过程中,开发人员能够声明和设置 SQL 变量、实现流程控制、处理异常、能够对数据进行插入、更新或者删除。同时,客户应用(这里指调用存储过程的应用程序,它可以是 JDBC 的调用,也可以是 ODBC 和 CLI 等)和存储过程之间可以传递参数,并且从存储过程中返回结果集。存储过程可以有C、 C++、JAVA等多种实现,其中,使用 SQL 编写的 DB2 存储过程是在开发中常见的一种存储过程。
一个简单的存储过程例子Hello World
create procedure Hello(
IN v_name   varchar(50),
OUT message varchar(100)
)
LANGUAGE SQL
BEGIN
         DECLARE v_message varchar(100);
         set v_message = 'Hello World!';
         set message = v_name ||','|| v_message;
END@  
调用这个存储过程:
call Hello('zhangsan',?)
页: [1]
查看完整版本: db2存储过程简介