您如何将 UTL_FILE.FILE_TYPE 作为输出参数
Posted
技术标签:
【中文标题】您如何将 UTL_FILE.FILE_TYPE 作为输出参数【英文标题】:How do you get the UTL_FILE.FILE_TYPE as an out parameter 【发布时间】:2013-06-25 17:29:33 【问题描述】:我正在尝试从 plsq 获取文件句柄,我正在尝试查看是否可以测试 plsql 包 从 Java 我有这个代码:
Properties props = Utils.readProps("database.properties");
Connection con = DBManager.getConnection(props.getProperty("url"), props.getProperty("username"), props.getProperty("password"));
Object file_type = new Object[3];
STRUCT oracleRecord;
try
//StructDescriptor fileType = StructDescriptor.createDescriptor("UTL_FILE.FILE_TYPE",con);
CallableStatement stmt = con.prepareCall("call simple_test.caller(?,?,?)");
stmt.setObject(1, "/u01/home/oracle/EI/278");
stmt.setObject(2, "ql_item_test.txt");
stmt.registerOutParameter(3, OracleTypes.STRUCT, "UTL_FILE.FILE_TYPE");
stmt.execute();
oracleRecord = ((OracleCallableStatement)stmt).getSTRUCT(3);
file_type = oracleRecord.getAttributes();
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
还有这个plsql代码:
PROCEDURE caller(file_path VARCHAR2,
file_name VARCHAR2,
fp OUT UTL_FILE.file_type) IS
maxLineSize INTEGER;
BEGIN
maxLineSize := 1024;
fp := UTL_FILE.FOPEN(file_path, file_name, 'R', maxLineSize);
END;
但是当我运行它时,我猜这个错误:
java.sql.SQLException: invalid name pattern: UTL_FILE.FILE_TYPE
我收到此错误是因为我无法传递/检索 plsql 类型?
【问题讨论】:
试试SYS.UTL_FILE.FILE_TYPE
。
我尝试了 SYS.UTL_FILE.FILE_TYPE 但我仍然遇到同样的错误。
UTL_FILE.FILE_TYPE
是UTL_FILE
内部使用的PL/SQL 记录结构。你想做什么?你的 Java 程序可以利用这个记录做什么?
我正在尝试测试一些具有 FILE_TYPE 输出/输入参数的自定义 PL/SQL 包。我正在使用 JUNIT 在 Java 上对此进行测试。我想知道我是否可以创建/检索此 PL/SQL 记录,但似乎我不能。
【参考方案1】:
UTL_FILE.FILE_TYPE 是一个 PL/SQL“记录”,Oracle JDBC 不支持记录。它确实支持对象以及某些对象和原语的集合。见http://docs.oracle.com/cd/E11882_01/java.112/e16548/oraoor.htmhttp://docs.oracle.com/cd/E11882_01/java.112/e16548/oraarr.htm和http://docs.oracle.com/cd/E11882_01/java.112/e16548/oraoot.htm#i1078761
顺便说一句,无论如何,我看不出你会在 Java 中用它做什么......
【讨论】:
以上是关于您如何将 UTL_FILE.FILE_TYPE 作为输出参数的主要内容,如果未能解决你的问题,请参考以下文章