informixinformix查询存储过程程能引用C函数吗

微信公众号
探索对Informix JDBC驱动程序使用可调用语句的存储过程的执行
JDBC CallableStatement 扩展了 PreparedStatement,并向服务器发送请求,以执行用于复杂操作(比如返回值或使用输入和输出存储过程参数)的存储过程。
在关系数据库应用程序中,与单个 SQL 语句相比,使用存储过程的主要优势在于查询计划(或执行计划)是在创建存储过程时生成的,并且需要对存储过程的每次执行重用相同的查询计划,这节省了数据库服务器中的大量资源。创建存储过程之后,任何数据库客户端(如 JDBC 应用程序)都可以随意调用这些过程,无需制定新的执行计划。
使用存储过程的方式因数据库服务器而异。数据库管理系统 (DBMS),如 Informix 和 DB2&,使用不同的 SQL 语法来执行存储过程。当应用程序开发人员需要编写以多个 DBMS 为目标的代码时,这使得事情变得更加困难。可调用语句提供了一个在所有 DBMS 系统中使用相同的 SQL 语句的执行存储过程的方法。
为何使用存储过程?
假设我们有一个 JDBC 应用程序,该应用程序需要高效地一次又一次重复某个任务序列。我们可能希望使用 Java& 方法,但我们希望进行多少次客户端/服务器通信来发送和接收数据呢?数据库服务器将为应用程序发送的每个 SQL 语句准备并生成一个查询计划,这将占用一些 CPU 时间。尽管考虑到了性能,但对一个 SQL 语句使用简单的 Java 方法可能不太好。
使用存储过程(它只是一次性任务)会怎么样呢?创建一个 SQL调用,并且您可以使用 CallableStatement 对象从 JDBC 应用程序中调用它,CallableStatement 对象充当了服务器上存储过程的调用方。大多数业务逻辑将位于存储过程上。这有助于简化客户端代码并会加快执行速度,因为在创建存储过程时就已经准备好了存储过程中包含的 SQL 语句,并对这些语句进行了优化。
在 JDBC 应用程序中调用存储过程
Informix JDBC 驱动程序提供了可用于执行存储过程的 Statement、PreparedStatement 和 CallableStatement 方法。使用哪种方法取决于存储过程的特性。例如,如果存储过程返回一个值,那么应该使用 JDBC Statement 对象。下表提供了哪个存储过程类型使用哪个方法的一些指南。
表 1. 显示基于各个存储过程类型要使用哪个 JDBC 方法的表
存储过程类型
存储过程不需要 IN 或 OUT 参数
使用 Statement 对象
存储过程具有 IN 参数
使用 PreparedStatement 对象
存储过程具有 IN 和 OUT 参数
使用 CallableStatement 对象
我们将提供一个在以下情况下使用 Informix JDBC 方法执行存储过程的示例:
使用没有参数的 Statement
使用具有输入参数的 PreparedStatement
使用具有输出参数的 CallableStatement
CallableStatement 中的已命名参数
过载的存储过程
上面提到的每个主题将包含以下细节:
在 Informix JDBC 驱动程序过程中调用存储过程所使用的语法
数据库上的存储过程的架构
具有输出的 JDBC 驱动程序示例程序
其他类似的新闻
● ● ● ● ● ● ● ● ● ●
其他相关的新闻
大家感兴趣的内容
小伙伴最爱的新闻
小伙伴还关注了以下信息
小伙伴关注的焦点
小伙伴都在关注的热门词
Copyright (C) 2006- Inc. All Rights Reserved
孝感风信信息技术有限公司 ● 版权所有INFORMIX的存储过程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
INFORMIX的存储过程
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩17页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢博客访问: 329544
博文数量: 132
博客积分: 5495
博客等级: 大校
技术积分: 1300
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: DB2/Informix
二、创建存储过程
CREATE [DBA] PROCEDURE 过程名(参数[, 参数 [ ,...]]&&)&&&&&&&&&&&&&&&&&& RETURNING 子句&&&&&&&&&&&&&&&&&&&&&&& 语句块&&&&&&&&&&&&&&&&& END&& PROCEDURE &&&&&&&&&&&&&&&&& DOCUMENT& 子句&&&&&&&&&&&&&&&&& WITH&& LISTING&& IN 文件名
过程名说明创建的存储过程的名字参数说明调用该存储过程所需的参数个数和类型一个存储过程可以不返回任何值,或返回一个或多个值,也可返回多组值。返回多组值的存储过程称之为游标式存储过程,对该类存储过程,相应调用函数需作一些特殊处理。
假设建立一个脚本名为proc1231.sql的文件,内容如下:
create procedure proc1231()return 2007;end procedure--end procedure后面不能加分号(;),否则会报语法错误document'this is a new procedure'--这里也不能加分号(;),ducoment子句需加双引号或单引号。with listing in '/export/home/user/pro.log';--最后可以加分号(;),也可以不加
存储过程中的语句块由SPL语句和SQL语句组成,但不包含下面的SQL语句
CREATE DATABASEDATEBASECLOSE DATEBASECHECK TABLEREPAIR&& INFO&& OUTPUT&& LOAD&& UNLOADCREATE PROCEDURECREATE PROCEDURE FROM
DOCUMENT子句对存储过程做一些说明,可省略。
WITH LISTING IN 选项说明接受编译器输出信息的文件名,如省略, 则编译器不产生输出。
向存储过程中传递变量create procedure procname(var_num integer default null)delete from proctable where colno=var_
execute procedure procname(11);
return语句
从存储过程中返回0个或多个值RETURN 语句说明的返回值的个数和类型必须与创建存储过程时说明的返回值的个数和类型一致,或者不返回任何值,在后一情形下,所有的返回值为空值。WITH& RESUME子句将保证存储过程继续执行,所有的变量均保持原有的值。该子句用于返回多组值,比如循环语句中。
create procedure proc_new()returning int,define num1;define num2;.........return num1,num2;
从SQL中调用存储过程
select * from userswhere number=proc_new(23);
从一个存储过程中调用另一个存储过程
两种格式:CALL 过程名(参数, ...) RETURNING 变量,...;CALL 过程名(参数名=参数, ...) RETURNING 变量,...;
说明:参数可以是SPL表达式或是SELECT语句,只要该语句返回单值,并且具有适当的类型和长度。如果参数个数多于被调用的存储过程的参数,则返回错误。如果参数个数少于被调用的存储过程的参数,则未说明的参数被初始化为其缺省值(该值在创建存储过程时说明)若无缺省值, 则返回错误。RETURNING 子句说明的变量用于接收被调用存储过程的返回值,如无返回值, 则可省略。
define var_no1call proc_new(22)& returning var_no1;
阅读(3344) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 informix查看存储过程 的文章

 

随机推荐