有返回值的存储过程(列表[结果集]) 最常用
由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用package了。
案例:编写一个过程,输入部门号,返回该部门所有雇员信息
1)建一个包。如下:
SQL> create or replace package testpackage as
2 type test_cursor is ref cursor;
3 end testpackage;
4 /
Package created
2)建立存储过程。如下:
SQL> --2.创建一个存储过程
SQL> create or replace procedure sun_pro13
2 (sunNo in number,p_cursor out testpackage.test_cursor) is
3 begin
4 open p_cursor for select * from emp where deptno=sunNo;
5 end;
6 /
Procedure created
//需要注意的是游标不能close否则在java中不能够调用到
3)如何在java中调用?
public class Test1 {
public static void main(String[] args) {
Connection ct = null;
CallableStatement cs = null;
try {
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
//看看如何调用有返回值的存储过程(列表形式【结果集】)
//1.创建CallableStatement
cs = ct.prepareCall("{call sun_pro13(?,?)}");
//2.给?赋值
cs.setInt(1, 10);
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
//执行
cs.execute();
//得到结果集
ResultSet rs = (ResultSet) cs.getObject(2);
while(rs.next()){
System.out.println("部门号:"+rs.getInt(1)+'\t'+rs.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}
finally{
//关闭各个打开的资源
try {
cs.close();
ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
- 浏览: 220698 次
- 性别:
- 来自: 江西
最新评论
-
闷骚的小老头:
这个和eclipse右什么区别么,都会啊这个
如何在Android Studio中创建一个selector.xml文件 -
闷骚的小老头:
导入Model就ok
如何在Android Studio中导SlidingMenu框架到项目中 -
gaojingsong:
七天玩转oracle,韩顺平玩转oracle,有些东西过时了, ...
oracle表的数据类型
相关推荐
12. **把对象传递到一个过程** - 作为参数传递对象。 13. **类、继承与多态性** - 类定义了对象的结构和行为。 - 继承允许子类继承父类的特征。 - 多态性允许子类重写或扩展父类的方法。 #### 第八部分:...
其中,“参数”是传递给表达式的输入,而“->”是lambda运算符,用于分隔参数和方法体,而“表达式”可以是一个返回值,也可以是执行了某些动作但没有返回值的代码块。 并行流是在Java 8中引入的Stream API的一个...
- 形式间调用是指在一个FORM中启动另一个FORM的过程。这通常涉及到传递参数和控制流程。 **28. FORM遍历数据块** - 遍历数据块是处理大量数据时常用的技术。这可以通过编写循环代码来实现。 **29. Form实现复制上...
- 调用返回多个结果集的存储过程:当一个存储过程返回多个独立的数据块时,可以分别处理每个结果集。 了解并熟练掌握在BIRT中使用存储过程创建数据源,不仅可以提高报表的灵活性,还能优化性能,特别是当处理复杂的...
1. 返回记录集的存储过程:这类过程会返回一个结果集,比如查询满足特定条件的记录。 2. 返回数值的存储过程(标量存储过程):执行后返回一个单一的值,比如数据库中的函数或命令。 3. 行为存储过程:不返回值,...
存储过程支持参数输入输出、返回单个或多个结果集以及返回值,甚至可以在一个存储过程中嵌套调用其他存储过程。 在SQL Server中,根据定义主体的不同,存储过程主要分为三类: 1. **系统存储过程**:这些是SQL ...
- 存储过程可以包含输入、输出参数,甚至没有参数,也可以返回一个结果值。 2. **Oracle 存储过程基本语法** 创建一个简单的存储过程可能如下所示: ```sql CREATE OR REPLACE PROCEDURE procedure_name ( ...
DB2存储过程是一种在数据库中预编译并存储的过程,它可以接受输入参数、返回单个或多个结果集,以及返回状态值。编写良好的DB2存储过程能够提高数据库性能、简化应用逻辑,并增强代码的可维护性。本文档旨在规范DB2...
这是算法的一个基本特性,确保算法能够在合理的时间内得出结果。 #### 2. 计算机算法的定义 - **算法定义**:算法是指解决问题的一系列清晰、精确的步骤,用于解决特定问题或完成特定任务的方法。选项C给出了最准确...
- 例如,如果有一个二进制数1011,左移两位得到的结果是101100,即原数乘以4。 ### 12. 高级程序设计语言的特点 - 用高级语言编写的程序具有良好的 **可读性和可移植性**。 - 这意味着相同的代码可以在不同的操作...
无参存储过程是最简单的存储过程形式,不接收任何参数。创建语法如下: ```sql CREATE OR REPLACE PROCEDURE NoParPro AS BEGIN -- 执行逻辑 END; ``` #### 2.2 带参存储过程 带参存储过程可以根据不同的参数提供...
2. **创建数据窗口对象**:通过数据窗口对象可以调用存储过程并处理返回的结果集。 3. **调用存储过程**:使用 PowerScript 语言编写脚本来调用存储过程,可以传递参数并在需要时处理返回值。 #### 实践意义 在...
3. **处理结果**:存储过程的返回值通常是一个DataSet、DataTable或者自定义类型。LINQ to SQL会根据存储过程的输出参数和结果集自动创建相应的返回对象。 ** 函数的使用 ** 1. **映射函数**:对于数据库函数,...
根据给定文件的信息,我们可以总结出以下几个重要的知识点: ### 1. 二进制到十进制转换 ...` 来读取用户输入的一个整数并将其存储在变量 `a` 中。这里 `%d` 是格式化字符串,`&a` 是变量 `a` 的地址。
- `Create function`:创建函数的命令,函数是一种特殊类型的存储过程,可以返回一个值。 - `Return`:函数中返回值的语句。 - `Create procedure`:创建存储过程的命令,存储过程是为执行特定操作而编写的SQL...
- Overload和Override:Overload是方法名相同但参数列表不同的多态形式,Override是子类重写父类方法。Overloaded方法不能改变返回值类型。 - forward和redirect:forward是服务器内部跳转,redirect是客户端...
- **应用场景**:例如,假设有一个客户表作为主表,包含客户ID等信息;另一个订单表作为子表,包含客户ID和订单详情等信息。在这种情况下,为了保证每个订单都对应于一个有效的客户,就需要设置参照完整性规则,确保...
- **知识点概述**:在将E-R图转换为关系模式的过程中,有一个规则指出一个实体型通常转换为一个关系模式(选项D)。这意味着每个实体在数据库中通常会被表示为一张表。 - **转换原则**:此外,实体之间的联系也可以...