gpt4 book ai didi

java - 如何将 UTL_FILE.FILE_TYPE 作为输出参数

转载 作者:搜寻专家 更新时间:2023-10-30 20:41:33 24 4
gpt4 key购买 nike

我正在尝试从 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 类型?

最佳答案

UTL_FILE.FILE_TYPE 是一个 PL/SQL“记录”,Oracle JDBC 不支持记录。它确实支持对象和某些对象和基元的集合。参见 http://docs.oracle.com/cd/E11882_01/java.112/e16548/oraoor.htm http://docs.oracle.com/cd/E11882_01/java.112/e16548/oraarr.htmhttp://docs.oracle.com/cd/E11882_01/java.112/e16548/oraoot.htm#i1078761

顺便说一句,无论如何我都看不出你会在 Java 中用它做什么......

关于java - 如何将 UTL_FILE.FILE_TYPE 作为输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com