ADF之在代码中调用PLSQL中的PKG
Posted 十木禾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ADF之在代码中调用PLSQL中的PKG相关的知识,希望对你有一定的参考价值。
如果想调用PLSQL中的PKG,则首先要在代码中连接到数据库中,以下提供两种连接方式:JDBC
和JNDI
关于这两种对数据库连接的区别,可见http://www.cnblogs.com/panjun-Donet/articles/1182204.html
JDBC连接数据库
public Connection getJDBCConnection()
try
Connection conn = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("URL", "UserName", "Password");
return conn;
catch (Exception e)
e.printStackTrace();
return null;
JNDI连接数据库
public Connection getJNDIConnection()
try
Connection conn = null;
InitialContext ctx = new InitialContext();
if (ctx != null)
Object o = ctx.lookup("DataSource Name");
DataSource ds = (DataSource)o;
conn = ds.getConnection();
return conn;
catch (Exception e)
e.printStackTrace();
return null;
在得到数据库的连接之后,就可以很愉快的调用数据库里面的各种资源了
如下有一个PKG,命名为fnd_cux_pkg
,其中有一个方法insert_lookup_type
代码如下
CREATE OR REPLACE PACKAGE fnd_cux_pkg IS
-- Author : 张俊强~
-- Created : 2017/8/22 10:36:41
-- Purpose : ADF调用pkg测试
/*--======================--
* 插入值列表中的Type
*--======================--*/
PROCEDURE insert_lookup_type(lookup_type_p VARCHAR2,
lookup_name_p VARCHAR2,
lookup_desc_p VARCHAR2,
module_code_p VARCHAR2);
END fnd_cux_pkg;
CREATE OR REPLACE PACKAGE BODY fnd_cux_pkg IS
PROCEDURE insert_lookup_type(lookup_type_p VARCHAR2,
lookup_name_p VARCHAR2,
lookup_desc_p VARCHAR2,
module_code_p VARCHAR2) IS
BEGIN
INSERT INTO FND_LOOKUP_TYPES
(LOOKUP_ID,LOOKUP_TYPE,LOOKUP_NAME,LOOKUP_DESC,MODULE_CODE)
VALUES
(FND_LOOKUP_TYPES_S.Nextval,lookup_type_p,lookup_name_p,lookup_desc_p,module_code_p);
COMMIT;
END insert_lookup_type;
END fnd_cux_pkg;
现在要在代码中调用PKG啦
/**
* 调用pkg来插入一条数据到FND_LOOKUP_TYPE表中
* */
public void onInsertLookupTypeListener(ActionEvent actionEvent)
// 1: 获取与数据库的连接
Connection conn =this.getJNDIConnection();//JDBC也可
System.out.println(conn);
try
PreparedStatement pStatement =
conn.prepareStatement("BEGIN fnd_cux_pkg.insert_lookup_type(?,?,?,?); END;");
pStatement.setString(1, "HR_EMP_HEIGHT");
pStatement.setString(2, "身高");
pStatement.setString(3, "身高选择");
pStatement.setString(4, "HR");
pStatement.executeUpdate();
conn.close();
catch (SQLException e)
throw new RuntimeException("插入异常",e);
注:使用JDBC还是JNDI取决于AM中对于Connection Type的配置。
以上是关于ADF之在代码中调用PLSQL中的PKG的主要内容,如果未能解决你的问题,请参考以下文章