gpt4 book ai didi

java.sql.SQLException:参数 IN 或 OUT 缺失,位于 l'index::3

转载 作者:行者123 更新时间:2023-12-01 09:40:11 31 4
gpt4 key购买 nike

我是 Oracle 新手,尝试通过 callStat 从包中调用我的过程,但出现以下错误:

java.sql.SQLException: Paramètre IN ou OUT absent dans l'index :: 3

我读了很多关于这个问题的帖子,但无法真正定位我的问题,有什么线索吗?

这是我的程序:

PROCEDURE get_employees(
emp_no IN number,
batch_size IN NUMBER,
found IN OUT NUMBER,
done_fetch OUT NUMBER,
emp_name OUT name,
emp_dept OUT dept,
emp_salary OUT sal) IS



BEGIN
IF NOT get_emp%ISOPEN THEN -- open the cursor if
OPEN get_emp(emp_no); -- not already open
END IF;
done_fetch := 0; -- set the done flag FALSE
found := 0;

FOR i IN 1..batch_size LOOP
FETCH get_emp INTO emp_name(i), emp_dept(i), emp_salary(i);
IF get_emp%NOTFOUND THEN -- if no row was found
CLOSE get_emp;
done_fetch := 1; -- indicate all done
EXIT;
ELSE
found := found + 1; -- count row
END IF;
END LOOP;


END;

和部分java代码

public class main1 {

public static void main(String[] args) {

Connection conn = null;
CallableStatement cst = null;
ResultSet rs = null;
int emp_no = 100;
Object temp;

try {
Class.forName ("oracle.jdbc.OracleDriver");

conn =DriverManager.getConnection("yada yada yada");
conn.setAutoCommit(false);
System.out.println("Successfuly connected!");


cst = conn.prepareCall("{ call get_employees.pkg1(?,?,?,?) }");
cst.setInt(1, emp_no);
cst.registerOutParameter(2, OracleTypes.CURSOR);
cst.execute();
rs = (ResultSet) cst.getObject(2);
ResultSetMetaData rsm = rs.getMetaData();
int columnCount = rsm.getColumnCount();
while (rs.next()){
for (int j=0;j< columnCount;j++){
temp = rs.getObject(j+1);
}
}

最佳答案

您尚未设置参数 #3 和 #4。您还可以为 IN 参数 #2 调用 registerOutParameter。

关于java.sql.SQLException:参数 IN 或 OUT 缺失,位于 l'index::3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521543/

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