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@
分享到:
相关推荐
这个接口是`PreparedStatement`的子接口,用于执行SQL存储过程和函数。 ```java Connection conn = DriverManager.getConnection("jdbc:url", "username", "password"); CallableStatement cs = conn.prepareCall(...
`CallableStatement`是`PreparedStatement`的子接口,专门用于执行存储过程或函数。 ```java CallableStatement cstmt = conn.prepareCall("{call adddept(?,?,?)}"); // 设置参数 cstmt.setInt(1, 13); cstmt....
在给定的代码片段中,可以看到一个名为`AddTimePay`的子过程,它负责调用Oracle数据库中的存储过程`add_clockpaymount`。 #### 1. 创建命令对象和参数 首先,创建一个`ADODB.Command`对象来执行存储过程,并设置其...
调用存储过程的关键在于使用CallableStatement接口,它是PreparedStatement的子接口,专门用于调用数据库的存储过程。以下是一个基本的调用流程: 1. 加载JDBC驱动:确保已经引入了对应数据库的JDBC驱动库,例如...
在Spring Boot应用中,调用Oracle数据库的存储过程有多种方式。本文主要介绍三种方法,包括使用`entityManagerFactory.unwrap(SessionFactory.class).openSession()`、直接使用`EntityManager`的`...
### VB6.0调用存储过程的例子(方法一) 在Visual Basic 6.0中,调用数据库中的存储过程是一项非常实用的功能。本篇将详细解释一个具体的示例,通过VB6.0来调用一个名为`ADOTestRPE`的存储过程,并测试其返回值、...
主要涉及的接口有`java.sql.CallableStatement`,它是`PreparedStatement`的子接口,用于执行数据库的存储过程。 3. **CallableStatement的使用**: 调用存储过程通常分为以下步骤: - 获取数据库连接:使用`...
"Oracle触发器调用存储过程" Oracle触发器可以调用存储过程,以实现业务逻辑的自动化执行。然而,在触发器中调用存储过程时,需要注意事务的隔离性,以避免出现锁定和死锁的问题。Oracle自治事务(Autonomous ...
在开发过程中,可以使用诸如IntelliJ IDEA或Eclipse这样的IDE进行调试,它们提供了方便的工具来查看数据库连接、执行SQL语句以及跟踪存储过程调用的过程。同时,Oracle的SQL Developer工具也是调试PL/SQL代码的好...
"UAP报表中调用存储过程" UAP报表是当前流行的报表开发工具之一,通过UAP使用自定义报表可以实现复杂的业务逻辑。最新的U872版本中,UAP报表可以调用存储过程,实现更加复杂的数据处理和计算。本文将详细介绍如何在...
此方法通常利用了`CallableStatement`接口,它是`PreparedStatement`的子接口,专门用于执行SQL存储过程或函数。 ### 一、基础知识简介 #### 1.1 存储过程概述 存储过程是预先编写并编译好的SQL代码集合,它们存储...
3. **CallableStatement**:是`PreparedStatement`的子接口,用于执行存储过程或函数。 #### 二、环境搭建 为了能够在Java中调用Oracle数据库中的存储过程和函数,首先需要确保以下条件得到满足: 1. **JDBC驱动*...
递归调用的存储过程是指该存储过程在其执行过程中会调用自身,形成一种自相似的结构,通常用于处理层次数据或者实现特定的算法。在给定的标题“一个递归调用的存储过程”中,我们可以推测这个存储过程利用了递归机制...
基于上述原理,可以在C#编程语言中设计一个专门用于执行存储过程调用的类,例如名为AutoCallProcedure的类。此类的实现可以帮助开发者以更灵活和自动化的方式调用存储过程。 以下是AutoCallProcedure类的基本定义和...
`p12`存储过程同样实现了这一功能,但使用了子查询和声明局部变量的方式。 在实验过程中,我们执行了每个存储过程,验证了它们的功能是否正确。例如,我们调用`CUS_BUY2`查询客户编号为"C00005"的购买记录,调用`TP...
在hibernate中调用oracle中的存储过程的详细代码。可以借鉴使用,帮助学习。
调用存储过程需要使用`CallableStatement`接口,它是`PreparedStatement`的子接口,专门用于调用数据库中的存储过程。通过`Connection`对象的`prepareCall()`方法创建`CallableStatement`实例。存储过程的调用格式...
根据给定的信息,本文将详细解释如何通过执行特定SQL查询来查看存储过程的执行情况,以及如何通过查询数据库的不同视图来获取与IO操作相关的详细信息。这些信息对于监控数据库性能、诊断问题以及优化存储过程至关...
在Java应用程序中调用存储过程是常见的数据库交互方式,这允许开发人员利用数据库的计算能力,同时保持业务逻辑的清晰。 一、存储过程的创建与调用 1. 创建存储过程:在SQL中,我们可以使用`CREATE PROCEDURE`语句...
在汇编语言中,子程序(或称过程)的调用是一种重要的编程技巧,它允许程序员将复杂的功能分解为多个可重复使用的模块,从而提高代码的可读性和可维护性。本文将基于给定的汇编代码示例,深入解析子程序调用的过程...