作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试使用 JDBC 执行存储过程,我似乎无法克服此错误,
java.sql.SQLException: Parameter number 1 is not an OUT parameter
public static void SP1() throws SQLException, IOException {
try {
stmt = conn.createStatement();
stmt.executeUpdate("DROP PROCEDURE IF EXISTS sp1;");
stmt.executeUpdate("CREATE PROCEDURE sp1(OUT cName VARCHAR(20))"
+ "SELECT CuratorName FROM curator "
+ "WHERE CuratorPhone = \"90394857\" INTO cName;");
conn.commit();
System.out.println("Sp1 created");
CallableStatement cs3 = conn.prepareCall("{call sp1(?)}");
cs3.registerOutParameter(1, java.sql.Types.VARCHAR);
cs3.execute();
String result = cs3.getString("cName");
System.out.println("Result from sp1:" + result);
} catch (Exception e) {
System.out.println(e);
}
}
最佳答案
如果您的存储过程定义包含查看您共享的代码的 IN 参数,则 Call 语句应如下所示
CallableStatement cs3 = conn.prepareCall("{call sp1(?)}");
cs3.setString(1, java.sql.Types.VARCHAR);
该参数需要设置为 IN 参数。
如果您的存储过程定义包含 OUT 参数,则需要修改您的调用语句。
CallableStatement cs3 = conn.prepareCall("{? = call sp1()}");
cs3.registerOutParameter(1, java.sql.Types.VARCHAR);
无论如何,分享你的过程定义,这样会更清楚。
关于java - 参数号 1 不是 OUT 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27063063/
我是一名优秀的程序员,十分优秀!