[英]Parameter number 1 is not an OUT parameter
嘗試使用JDBC執行存儲過程時,我似乎無法克服此錯誤,
java.sql.SQLException:參數編號1不是OUT參數
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);
無論如何,共享您的過程定義,這將使其更加清晰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.