当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

如何在ADF 的Application Module中调用存储过程

发表于: 2012-11-16   作者:dana.wang   来源:转载   浏览次数:
摘要: 1.调用无参数的存储过程 public void callProcWithNoArgs() { getDBTransaction().executeCommand( "begin devguidepkg.proc_with_no_args; end;"); } 2.调用含入参的存储过程 protected void callStoredPro
1.调用无参数的存储过程
public void callProcWithNoArgs() {
getDBTransaction().executeCommand(
"begin devguidepkg.proc_with_no_args; end;");
}


2.调用含入参的存储过程
protected void callStoredProcedure(String stmt, Object[] bindVars) {
PreparedStatement st = null;
	try {
		// 1. Create a JDBC PreparedStatement for
		st = getDBTransaction().createPreparedStatement("begin "+stmt+";end;",0);
		if (bindVars != null) {
		// 2. Loop over values for the bind variables passed in, if any
			for (int z = 0; z < bindVars.length; z++) {
				// 3. Set the value of each bind variable in the statement
				st.setObject(z + 1, bindVars[z]);
			}
		}
		// 4. Execute the statement
		st.executeUpdate();
	}catch (SQLException e) {
		throw new JboException(e);
	}finally {
		if (st != null) {
		try {
			// 5. Close the statement
			st.close();
		}catch (SQLException e) {}
		}
	}
}
public void callProcWithThreeArgs(Number n, Date d, String v) {
	callStoredProcedure("devguidepkg.proc_with_three_args(?,?,?)",	new Object[]{n,d,v});
}



3.含入参的调用存储函数
public static int NUMBER = Types.NUMERIC;
public static int DATE = Types.DATE;
public static int VARCHAR2 = Types.VARCHAR;
protected Object callStoredFunction(int sqlReturnType, String stmt,Object[] bindVars) {
	CallableStatement st = null;
	try {
		// 1. Create a JDBC CallabledStatement
		st = getDBTransaction().createCallableStatement("begin ? := "+stmt+";end;",0);
		// 2. Register the first bind variable for the return value
		st.registerOutParameter(1, sqlReturnType);
		if (bindVars != null) {
			// 3. Loop over values for the bind variables passed in, if any
			for (int z = 0; z < bindVars.length; z++) {
				// 4. Set the value of user-supplied bind vars in the stmt
				st.setObject(z + 2, bindVars[z]);
			}
		}
		// 5. Set the value of user-supplied bind vars in the stmt
		st.executeUpdate();
		// 6. Return the value of the first bind variable
		return st.getObject(1);
	}catch (SQLException e) {
		throw new JboException(e);
	}finally {
		if (st != null) {
			try {
				// 7. Close the statement
				st.close();
			}catch (SQLException e) {}
			}
		}
	}
}

public String callFuncWithThreeArgs(Number n, Date d, String v) {
	return (String)callStoredFunction(VARCHAR2,"devguidepkg.func_with_three_args(?,?,?)",
new Object[]{n,d,v});
}

4.获取当前的数据库事务
private Connection getCurrentConnection() throws SQLException {
/* Note that we never execute this statement, so no commit really happens */
	PreparedStatement st = getDBTransaction().createPreparedStatement("commit",1);
	Connection conn = st.getConnection();
	st.close();
	return conn;
}

如何在ADF 的Application Module中调用存储过程

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
ADF应用通常部署在Weblogic中,本文介绍如何在Weblogic中创建JDNI数据源,并将该数据源提供给ADF应
Application Module,以下简称AM ,AM作为一个管理容器而存在,为相关(这些对象共同完成一个相同的任
在JavaScript调用后台Java程序的过程中,可能还需要涉及到传递参数 一下是参考步骤: 1, 按照 ADF程序
当我们在按某一个按钮或者链接的时候, 我们可能需要调用还记个程序,可能不能在同一个后台方法里实现
最近一直在看flex4.5,adobe官方说spark组件效率很高,从flex3迁移到flex4是“无痛”的。不过用aler
Remote procedure calls--远程过程调用 Android has a lightweight mechanism for remote procedure
Remote procedure calls--远程过程调用 Android has a lightweight mechanism for remote procedure
学会使用PL/SQL Developer的调试功能,对于编写复杂的存储过程,包,funtion...非常有帮助,所以今
通过 Visual Studio 的 Professional 和 Team System 版本,我们可以对 SQL Server 中的存储过程设
前几个章节介绍了存储过程的创建,和数据库中的各个关联;那存储过程有这么的的优点,具体在程序中
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号