案例扩张:编写一个过程,可以输入雇员的编号,返回该雇员的姓名、工资和岗位。
plsql代码
--有输入和输出的存储过程(返回多个值)
create or replace procedure sun_pro12
(sunNo in number,sunName out varchar2,sunSal out number,sunJob out varchar) is
begin
select ename,sal,job into sunName,sunSal,sunJob from kkkk where empno=sunNo;
end;
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");
//2.创建CallableStatement,专门用来调用存储过程
//看看如何调用有返回值的过程
//创建CallableStatement
cs = ct.prepareCall("{call sun_pro12(?,?,?,?)}");
//给第一个?赋值
cs.setInt(1, 7788);
//给第二个?赋值
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
//oracle.jdbc.OracleTypes选定的类型取决于第二个问号是什么类型的
cs.registerOutParameter(3, oracle.jdbc.OracleTypes.NUMBER);
cs.registerOutParameter(4, oracle.jdbc.OracleTypes.VARCHAR);
//执行
cs.execute();
//取出返回值,要注意?的位置
String name = cs.getString(2);
double sal = cs.getDouble(3);
String job = cs.getString(4);
System.out.println("7788的名字:"+name+'\t'+"工资:"+sal+'\t'+"职位:"+job);
} catch (Exception e) {
e.printStackTrace();
}
finally{
//关闭各个打开的资源
try {
cs.close();
ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
- 浏览: 220694 次
- 性别:
- 来自: 江西
最新评论
-
闷骚的小老头:
这个和eclipse右什么区别么,都会啊这个
如何在Android Studio中创建一个selector.xml文件 -
闷骚的小老头:
导入Model就ok
如何在Android Studio中导SlidingMenu框架到项目中 -
gaojingsong:
七天玩转oracle,韩顺平玩转oracle,有些东西过时了, ...
oracle表的数据类型
相关推荐
存储过程支持参数输入输出、返回单个或多个结果集以及返回值,甚至可以在一个存储过程中嵌套调用其他存储过程。 在SQL Server中,根据定义主体的不同,存储过程主要分为三类: 1. **系统存储过程**:这些是SQL ...
存储过程是由一个或多个SQL语句组成的代码块,它在数据库服务器上预先编译并存储。当需要执行时,只需调用存储过程的名字,而无需每次都重新解析和执行SQL语句,从而提高了执行效率。 2. **创建存储过程** 在SQL...
- 调用返回多个结果集的存储过程:当一个存储过程返回多个独立的数据块时,可以分别处理每个结果集。 了解并熟练掌握在BIRT中使用存储过程创建数据源,不仅可以提高报表的灵活性,还能优化性能,特别是当处理复杂的...
C) **减少网络流量**:当多个SQL语句组合为一个存储过程时,客户端只需发送存储过程调用,而非所有的SQL语句,降低了网络传输的数据量,减轻了网络负载。 D) **安全性**:通过权限管理,系统管理员可以限制对存储...
存储过程有多种类型,包括系统存储过程、局部存储过程、临时存储过程和远程存储过程。系统存储过程以`sp_`开头,通常用于数据库管理和信息查询;局部存储过程存在于特定数据库中;临时存储过程(#或##)则只在当前...
4. **远程存储过程**:用于访问远程服务器上的数据,可以跨越多个服务器执行操作。 5. **扩展存储过程**:通过外部编程语言(如 C 或 C++)编写,并以 DLL 形式加载到 SQL Server 中。扩展存储过程能够实现更复杂的...
`charter_sql.sql`很可能是一个包含多个存储过程示例的SQL脚本文件,这些示例可以用来练习编写和执行存储过程。通过运行和分析这些脚本,我们可以看到存储过程在实际场景中的应用,比如数据的批量更新、复杂查询的...
通过设置返回值为`List`类型,我们可以处理存储过程返回的多个结果集。这通常涉及到多个`<resultMap>`和`<collection>`标签的使用,以便正确地映射和解析结果。 总结起来,MyBatis调用存储过程提供了灵活性和效率,...
与存储过程类似,但函数必须有返回值,并且其返回类型在定义时指定。函数通常用于执行计算或返回特定值。例如,根据雇员ID获取雇员姓名可以定义为一个存储函数。 **包** 在Oracle中,包是将相关的存储过程和函数...
使用`BEGIN...END`块来调用存储过程,适用于包含多个操作的情况。 示例: ```sql BEGIN -- 调用存储过程 NoParPro(); -- 其他操作 END; ``` #### 3.2 调用方式二 使用`EXECUTE IMMEDIATE`或`EXEC`语句来调用存储...
- 包允许将多个存储过程、函数、变量和游标组合在一起,提高代码的组织性和可维护性。 - 创建包的语法: ```sql CREATE PACKAGE schema.package_name AS -- declarations END package_name; CREATE PACKAGE ...
C++是一种强大的面向对象编程语言,它被广泛用于软件开发、系统编程、游戏开发、科学计算等多个领域。这篇“C++入门---非程序员自学教程”是专为那些没有编程背景的人设计的,旨在帮助初学者理解C++的基础概念并逐步...
解压后,你可能找到一个或多个Java类,它们展示了如何创建`CallableStatement`,设置参数,并执行存储过程。这些代码可能还包含了如何处理存储过程的输出,比如获取返回值或结果集。 7. **注意事项**: - 确保...
2. **SQL视图**:视图是数据库中的虚拟表,它是由一个或多个SQL查询的结果集组成。视图并不实际存储数据,而是提供了一种查看和访问数据的新方式。视图可以简化复杂查询,隐藏敏感信息,或者组合来自不同表的数据。...
1. **返回值**:存储过程可以没有返回值或返回多个值(通过输出参数),而函数必须返回单一值或一个表。 2. **副作用**:存储过程可以修改数据库数据,具有副作用;函数不允许修改数据库状态,应是无副作用的。 3. *...
DB2存储过程是一种在数据库中预编译并存储的过程,它可以接受输入参数、返回单个或多个结果集,以及返回状态值。编写良好的DB2存储过程能够提高数据库性能、简化应用逻辑,并增强代码的可维护性。本文档旨在规范DB2...
1. **映射函数**:对于数据库函数,同样可以在DBML中进行映射,创建一个返回值为特定类型的函数,然后将其与数据库中的函数对应。 2. **调用函数**:与存储过程类似,可以使用DataContext对象来调用映射的函数,如`...
Oracle 存储过程是数据库管理中的重要组成部分,它是一组为了完成特定功能的SQL语句集,被编译后存储在数据库中,可以被多次调用。本篇将深入探讨Oracle存储过程的基础知识、语法、常见问题以及如何通过Java进行调用...
存储过程是预编译的SQL语句和控制流语句的集合,可以在数据库中以函数的形式保存,供多次调用,提高了数据库的性能和安全性。 在C#中调用Oracle存储过程,我们需要使用Oracle提供的ODP.NET(Oracle Data Provider ...