几种应用程序调用Oracle存储过程的方法

2023-10-27

一、Java中调用带Cursor的存储过程:

存储过程定义:

PROCEDURE GET_CURSOR_RESULT2(CR  OUT CURSOR_RESULT) IS
     BEGIN
       OPEN CR FOR
      select t1.id, t1.account_id, t2.account, t1.key, t1.total, t1.status
        from table t1;
END GET_CURSOR_RESULT2;

调用GET_CURSOR_RESULT2存储过程:

jdbcTemplate.execute(new CallableStatementCreator() {
	public CallableStatement createCallableStatement(Connection con) throws SQLException {
	CallableStatement cs = con.prepareCall("{call TRAIL_GETCURSOR.GET_CURSOR_RESULT2(?)}");
	cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
	return cs;
}				
}, new CallableStatementCallback<List<Account>>() {
	public List<Account> doInCallableStatement(CallableStatement cs) {
	List<Account> accounts = null;
	ResultSet rs = null;
	cs.execute();
	rs = (ResultSet) cs.getObject(1);
	while(rs.next()) {				
		long id = rs.getLong("id");
		String accountName = rs.getString("account");
		long accountID = rs.getLong("account_id");
		long key = rs.getLong("key");
		long total = rs.getLong("total");
		accounts.set...
	}
	return accounts;
});


jdbcTemplate.execute()有两个参数:CallableStatement和CallableStatementCallback


二、Java中保证调用存储过程的事务

transTemplate.execute(new TransactionCallback() {
	public Object doInTransaction(TransactionStatus status) {
		try{
			success=jdbcTemplate.execute(...);
			if(!success) {
				status.setRollbackOnly();
			}
		} catch(e) {
			status.setRollbackOnly();
		}

);

在jdbcTemplate外面包上一个transTemplate,通过判断jdbcTemplate执行结果决定是否回退 status.setRollbackOnly()




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

几种应用程序调用Oracle存储过程的方法 的相关文章

  • Android Studio 0.8.2 URI 有一个权限组件

    我收到 Gradle 项目同步失败 消息 当我启动 Android Studio 时 当我尝试清理项目时 我收到 无法完成 Gradle 执行原因 URI 具有权限组件 我已经尝试了几件事 但仍然陷入困境 我将配置文件从用户文件夹中移出 并
  • 如何按出现顺序创建 Java 文档?

    我有一个非常大的 java 类文件 其中有很多成员 如何为此创建 HTML 文档 以便它按出现顺序显示成员 而不按成员类型排序 方法 常量和变量 例如 如果我的 Java 代码是 private int typeOfAction 1 not
  • 无法解析符号“AuthUI”

    我正在添加 firebase google 和 Gmail 登录 但是当我粘贴代码时 onAuthStateChanged NonNull FirebaseAuth firebaseAuth 方法我收到此错误 无法解析符号 AuthUI 在
  • Spring:url 无法正确解析链接

    尽管我对 Java 有丰富的经验 但我对 Spring 框架和 Web 应用程序还很陌生 当我在本地 tomcat 服务器上运行我的网站时 URL 为 http localhost 8080 myApp 现在 请求映射将我委托到我的主页 R
  • 为什么 java.util.concurrent.FutureTask 不可序列化

    我目前正在使用 Apache Wicket 我有一些 REST 调用 每个调用需要几秒钟 Wicket 只允许同步调用 ajax 所以我尝试使用 Future 和 Callable 这是我的课程的一部分 public abstract cl
  • JavaFX TabPane 禁用按键切换选项卡

    我有一个Tab有一些内容 ScrollBar和别的 The ScrollBar has event handler for keys left and right 但如果我按下这些按钮Tabs被切换 因为TabPane还有一个密钥处理程序
  • 如何在 JavaFX 中设置滚动窗格的单位增量?

    The 滚动条 http docs oracle com javafx 2 api javafx scene control ScrollBar htmlJavaFX 中的类包含一个用于设置单位增量的属性 这就是我所追求的 但是我找不到如何
  • JavaFX 多线程 - 连接线程不会更新 UI

    我正在尝试创建一个加载程序对话框 用户可以在其中知道程序正在加载所请求的内容并且程序正在按预期运行 但正因为如此 我需要join 解析器线程和之前继续主线程 这使得对话框空白 解析器任务 java public class ParserTa
  • R:连接到 Teradata 时 JDBC() 找不到 Java 驱动程序路径

    我正在尝试通过 RStudio 连接到 Teradata 但由于某种原因 JDBC 函数在识别 Java 驱动程序所在的路径时出现问题 请参阅下面的代码 library RODBC library RJDBC library rJava b
  • 如何在 selenium webdriver 中将网络浏览器从 Firefox 更改为 Chrome/Opera/IE/Safari?

    如何将浏览器从 firefox 更改为在 selenium webdriver 中工作的 Chrome Opera IE 请指导步骤以及代码片段 如果您对上述任何浏览器有答案 请回复 我读了很多这方面的内容 但无法正确链接 首先 您需要将正
  • new Date() 和日历日期之间的区别

    在实践中 下面两个日期有什么区别 Date date new Date Date date Calendar getInstance getTime 我的理解是 new Date 是基于 UTC GMT 的日期 而日历的 getTime 基
  • HttpURLConnection 中的 NTLM 身份验证在 JRE 中不起作用,但在 JDK 环境中起作用

    我正在使用 eclipse 开发应用程序的两个部分 Web 部件提供 REST 服务 并对服务的请求进行过滤waffle servlet NegotiateSecurityFilter它提取 Windows 登录信息来识别用户 客户端部分使
  • 如何生成0-8范围内除一个特定数字之外的随机数?

    我正在尝试开发 Tic Tac Toe 游戏 其中玩家 1 将单击一个按钮放置 X 稍后玩家 2 计算机 将在第一步中随机将 O 放置到其他按钮 为此 我需要创建一个随机数0 8 之间 除了玩家 1 点击的那个之外 我正在使用以下代码来生成
  • 更改 Java 字符串中的日期格式

    I ve a String代表一个日期 String date s 2011 01 18 00 00 00 0 我想将其转换为Date并将其输出到YYYY MM DD format 2011 01 18 我怎样才能实现这个目标 好的 根据我
  • 为自定义 userdetailsservice 定义 bean

    我如何定义我的自定义UserDetailsServicebean 的方式使我的 spring mvc Web 应用程序能够使用我的底层 MySQL 数据库来检查用户和密码的身份验证 具体如下 我正在添加安全性spring petclinic
  • 使用可变参数绘制星形

    我的任务是编写程序 允许用户绘制星星 星星的大小和手臂数量可能不同 当我处理基本星时 我使用 GeneralPath 和点表进行处理 int xPoints 55 67 109 73 83 55 27 37 1 43 int yPoints
  • Rmi 错误 IllegalArgumentException、MarshalException

    为所有人上课 package Task2 import java rmi RemoteException import java rmi server UnicastRemoteObject public class IdCl extend
  • 在 Android 中创建硬链接和符号链接

    我正在创建一个应用程序 我想在其中使用 Android 外部内存文件系统中的硬链接和符号链接 我尝试过使用命令 Os link oldpath newpath Os link oldpath newpath 但是 当我尝试这样做时 我收到此
  • 使用具有透明度的 IndexColorModel 绘制图像

    这是我的问题 我想在基于具有透明度的 IndexColorModel 的 BufferedImage 上应用转换 平移 旋转 剪辑 索引 0 是我的透明像素 索引 1 是黑色 索引 2 是白色 依此类推 源图像 即在转换之前 被实例化如下
  • a.equals(a) 什么时候返回 false?

    我想知道在哪些情况下java中的变量不能相等 使用equals 方法 自身 我这里说的不是对象而是变量本身 只要代码编译并在调用 equals 时返回 false 到目前为止 我发现的唯一情况是 public class A public

随机推荐