简体   繁体   English

参数编号1不是OUT参数

[英]Parameter number 1 is not an OUT parameter

Trying to execute a stored procedure using JDBC, I can't seem to get past this error, 尝试使用JDBC执行存储过程时,我似乎无法克服此错误,

java.sql.SQLException: Parameter number 1 is not an OUT parameter 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);
    }

}

If your Stored Procedure definition contains an IN parameter looking at the code you have shared, then the Call statement should look like this 如果您的存储过程定义包含一个IN参数,用于查看您共享的代码,则Call语句应如下所示

 CallableStatement cs3 = conn.prepareCall("{call sp1(?)}");
    cs3.setString(1, java.sql.Types.VARCHAR);

The parameter needs to be set as an IN Parameter. 该参数需要设置为IN参数。

If your Stored Procedure definition contains an OUT Parameter then your call statement needs to be modified. 如果您的存储过程定义包含OUT参数,则需要修改您的调用语句。

CallableStatement cs3 = conn.prepareCall("{? = call sp1()}");
        cs3.registerOutParameter(1, java.sql.Types.VARCHAR);

In any case, share your procedure definition, that would make it clearer. 无论如何,共享您的过程定义,这将使其更加清晰。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM