`
liulanghan110
  • 浏览: 1076874 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

子存储过程调用

SQL 
阅读更多

with return to caller 选项指定将来自游标的结果返回给调用者,后者可以是另一个过程或者客户机应用程序,这是默认选项

with return to client 选项指定将来自游标的结果返回给客户机应用程序,绕过中间的任何过程.

子存储过程:

create procedure Test(

out v_message varchar(500)

)

DYNAMIC RESULT SETS 1

LANGUAGE SQL

BEGIN

--异常处理

DECLARE SQLCODE INT;

DECLARE v_errCode INT DEFAULT 0;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION

BEGIN

SET v_errCode = SQLCODE;

END; 

 

set v_message = '子存储过程';

--使用游标返回结果集

BEGIN

DECLARE v_cur CURSOR WITH HOLD WITH RETURN TO CALLER FOR

SELECT * FROM test;

OPEN v_cur;

END;

 

RETURN v_errCode;

END@

--调用子存储过程

create procedure CallTest(

out v_message varchar(500)

)

DYNAMIC RESULT SETS 1

LANGUAGE SQL

BEGIN

 

DECLARE SQLCODE INT;

DECLARE v_errCode INT DEFAULT 0;

DECLARE result1 RESULT_SET_LOCATOR VARYING; --用来接收子存储过程的结果集

DECLARE v_name varchar(500); --用来接收子存储过程的输出参数

DECLARE v_id int;

DECLARE v_city varchar(50);

--异常处理

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION

BEGIN

SET v_errCode = SQLCODE;

END; 

 

 

--定义临时表

DECLARE GLOBAL TEMPORARY TABLE Temp

(

id int,

ctiy varchar(50)

)ON COMMIT PRESERVE ROWS WITH REPLACE NOT LOGGED;

 

--调用子存储过程

CALL Test(v_name);

 

if v_errCode = 0 then

set v_message = '调用' ||v_name||'成功';

else

set v_message = '调用' ||v_name||'失败';

end if;

 

--调用子过程的结果集

ASSOCIATE RESULT SET LOCATORS (result1) WITH PROCEDURE Test;

ALLOCATE   callC2   CURSOR   FOR   RESULT   SET   result1;

 

--将子过程结果集插入临时表

FETCH FROM callC2 INTO v_id, v_city;

WHILE sqlcode = 0

DO

INSERT INTO session.temp values(v_id,v_city);

FETCH FROM callC2 INTO v_id, v_city;

END WHILE;

 

--使用游标返回结果集

BEGIN

DECLARE v_cur CURSOR WITH HOLD WITH RETURN TO CALLER FOR

SELECT * FROM session.temp;

OPEN v_cur;

END;

 

RETURN v_errCode;

END@

分享到:
评论
1 楼 yezixingchen 2012-09-05  
给力

相关推荐

    Java对存储过程的调用方法

    这个接口是`PreparedStatement`的子接口,用于执行SQL存储过程和函数。 ```java Connection conn = DriverManager.getConnection("jdbc:url", "username", "password"); CallableStatement cs = conn.prepareCall(...

    java调用存储过程实例

    `CallableStatement`是`PreparedStatement`的子接口,专门用于执行存储过程或函数。 ```java CallableStatement cstmt = conn.prepareCall("{call adddept(?,?,?)}"); // 设置参数 cstmt.setInt(1, 13); cstmt....

    vb调用oracle存储过程

    在给定的代码片段中,可以看到一个名为`AddTimePay`的子过程,它负责调用Oracle数据库中的存储过程`add_clockpaymount`。 #### 1. 创建命令对象和参数 首先,创建一个`ADODB.Command`对象来执行存储过程,并设置其...

    Java调用数据库存储过程[mysql测试通过]

    调用存储过程的关键在于使用CallableStatement接口,它是PreparedStatement的子接口,专门用于调用数据库的存储过程。以下是一个基本的调用流程: 1. 加载JDBC驱动:确保已经引入了对应数据库的JDBC驱动库,例如...

    Springboot调用Oracle存储过程的几种方式.docx

    在Spring Boot应用中,调用Oracle数据库的存储过程有多种方式。本文主要介绍三种方法,包括使用`entityManagerFactory.unwrap(SessionFactory.class).openSession()`、直接使用`EntityManager`的`...

    VB6.0 调用存储过程的例子(方法一)

    ### VB6.0调用存储过程的例子(方法一) 在Visual Basic 6.0中,调用数据库中的存储过程是一项非常实用的功能。本篇将详细解释一个具体的示例,通过VB6.0来调用一个名为`ADOTestRPE`的存储过程,并测试其返回值、...

    调用存储过程(java)

    主要涉及的接口有`java.sql.CallableStatement`,它是`PreparedStatement`的子接口,用于执行数据库的存储过程。 3. **CallableStatement的使用**: 调用存储过程通常分为以下步骤: - 获取数据库连接:使用`...

    oracle触发器调用存储过程

    "Oracle触发器调用存储过程" Oracle触发器可以调用存储过程,以实现业务逻辑的自动化执行。然而,在触发器中调用存储过程时,需要注意事务的隔离性,以避免出现锁定和死锁的问题。Oracle自治事务(Autonomous ...

    java调用Oracle存储过程

    在开发过程中,可以使用诸如IntelliJ IDEA或Eclipse这样的IDE进行调试,它们提供了方便的工具来查看数据库连接、执行SQL语句以及跟踪存储过程调用的过程。同时,Oracle的SQL Developer工具也是调试PL/SQL代码的好...

    UAP报表中调用存储过程

    "UAP报表中调用存储过程" UAP报表是当前流行的报表开发工具之一,通过UAP使用自定义报表可以实现复杂的业务逻辑。最新的U872版本中,UAP报表可以调用存储过程,实现更加复杂的数据处理和计算。本文将详细介绍如何在...

    java 调用存储过程返回单个值

    此方法通常利用了`CallableStatement`接口,它是`PreparedStatement`的子接口,专门用于执行SQL存储过程或函数。 ### 一、基础知识简介 #### 1.1 存储过程概述 存储过程是预先编写并编译好的SQL代码集合,它们存储...

    java中调用oracle的存储过程和函数

    3. **CallableStatement**:是`PreparedStatement`的子接口,用于执行存储过程或函数。 #### 二、环境搭建 为了能够在Java中调用Oracle数据库中的存储过程和函数,首先需要确保以下条件得到满足: 1. **JDBC驱动*...

    一个递归调用的存储过程

    递归调用的存储过程是指该存储过程在其执行过程中会调用自身,形成一种自相似的结构,通常用于处理层次数据或者实现特定的算法。在给定的标题“一个递归调用的存储过程”中,我们可以推测这个存储过程利用了递归机制...

    SQL Server存储过程调用方法的研究.pdf

    基于上述原理,可以在C#编程语言中设计一个专门用于执行存储过程调用的类,例如名为AutoCallProcedure的类。此类的实现可以帮助开发者以更灵活和自动化的方式调用存储过程。 以下是AutoCallProcedure类的基本定义和...

    SQL Server存储过程

    `p12`存储过程同样实现了这一功能,但使用了子查询和声明局部变量的方式。 在实验过程中,我们执行了每个存储过程,验证了它们的功能是否正确。例如,我们调用`CUS_BUY2`查询客户编号为"C00005"的购买记录,调用`TP...

    使用hibernate调用oracle的存储过程

    在hibernate中调用oracle中的存储过程的详细代码。可以借鉴使用,帮助学习。

    java调用存储过程

    调用存储过程需要使用`CallableStatement`接口,它是`PreparedStatement`的子接口,专门用于调用数据库中的存储过程。通过`Connection`对象的`prepareCall()`方法创建`CallableStatement`实例。存储过程的调用格式...

    查看存储过程执行情况

    根据给定的信息,本文将详细解释如何通过执行特定SQL查询来查看存储过程的执行情况,以及如何通过查询数据库的不同视图来获取与IO操作相关的详细信息。这些信息对于监控数据库性能、诊断问题以及优化存储过程至关...

    存储过程的调用、及分页技术

    在Java应用程序中调用存储过程是常见的数据库交互方式,这允许开发人员利用数据库的计算能力,同时保持业务逻辑的清晰。 一、存储过程的创建与调用 1. 创建存储过程:在SQL中,我们可以使用`CREATE PROCEDURE`语句...

    汇编过程(子程序)调用举例

    在汇编语言中,子程序(或称过程)的调用是一种重要的编程技巧,它允许程序员将复杂的功能分解为多个可重复使用的模块,从而提高代码的可读性和可维护性。本文将基于给定的汇编代码示例,深入解析子程序调用的过程...

Global site tag (gtag.js) - Google Analytics