Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 参数编号1不是输出参数_Java_Sql_Stored Procedures_Jdbc_Parameters - Fatal编程技术网

Java 参数编号1不是输出参数

Java 参数编号1不是输出参数,java,sql,stored-procedures,jdbc,parameters,Java,Sql,Stored Procedures,Jdbc,Parameters,尝试使用JDBC执行存储过程时,我似乎无法克服此错误 java.sql.SQLException:参数编号1不是OUT参数 如果存储过程定义包含一个IN参数,该参数查看您共享的代码,那么Call语句应该如下所示 CallableStatement cs3 = conn.prepareCall("{call sp1(?)}"); cs3.setString(1, java.sql.Types.VARCHAR); 该参数需要设置为IN参数 如果存储过程定义包含OUT参数,则需要修改cal

尝试使用JDBC执行存储过程时,我似乎无法克服此错误

java.sql.SQLException:参数编号1不是OUT参数


如果存储过程定义包含一个IN参数,该参数查看您共享的代码,那么Call语句应该如下所示

 CallableStatement cs3 = conn.prepareCall("{call sp1(?)}");
    cs3.setString(1, java.sql.Types.VARCHAR);
该参数需要设置为IN参数


如果存储过程定义包含OUT参数,则需要修改call语句

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

在任何情况下,分享您的程序定义,这将使其更清晰

存储过程是否独立运行(即在Java之外)?您使用的是什么DBMS?我使用的是在localhost上运行的Mysql。我在Netbeans IDEOdd中运行所有操作,无法重现此异常。你的代码为我运行。我使用的是MySQL版本5.5.22,MySQL连接器JAR版本5.1.18,Windows 8.1 x64,Java 1.8.0_05,如果有任何帮助的话。我已经尝试了第二个选项,因为我有一个参数。我现在得到了这个错误:java.lang.NullPointerException
cs3.setString(1,java.sql.Types.VARCHAR)将是一个语法错误,因为您正在为字符串参数指定一个整数。您可以为它指定一个字符串值。因为这个问题是关于
OUT
,所以作为你答案的一部分是没有意义的。其次,
{?=call sp1()}
转义将用于具有单个返回值的存储过程,而不是
OUT
参数。
CallableStatement cs3 = conn.prepareCall("{? = call sp1()}");
        cs3.registerOutParameter(1, java.sql.Types.VARCHAR);