簡體   English   中英

參數編號1不是OUT參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM