Я пытаюсь напечатать возвращаемое значение MySQL, хранящее , функцию из кода JDBC, который выглядит следующим образом (я использую MySQL Server 5.7.13):Ошибка в коде JDBC, вызывающем хранимую функцию, которая возвращает значение
package jdbc;
import java.sql.DriverManager;
import java.sql.*;
import java.util.Scanner;
public class CallableStatementsCallingFunctions {
public static void main(String... syrt)
{
try
{
try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e)
{
System.out.println("Error(class): "+ e);
}
try
{
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/collablestatement","root","mysql") ;
CallableStatement cs = conn.prepareCall("{call ?:=getBalance1(?)}");
String s = new Scanner(System.in).nextLine();
cs.registerOutParameter(1,Types.INTEGER);
cs.setInt(2,Integer.parseInt(s));
cs.execute();
System.out.println("Account number :" + cs.getInt(1));
conn.close();
}
catch(SQLException e)
{
System.out.println("Error(SQL) : "+e);
}
}
catch(Exception e)
{
System.out.println("Error(Fro outer try) : "+ e);
}
}
}
хранимая функция getBalance1(acno)
показана здесь
мой выходной код показан здесь
Я получаю вывод команды SQL, но в JDBC Я получаю и SQLException
о том, что
параметр 1 не является выходным параметром
Я знаю, что параметр 1 использовался в качестве заполнителя возвращаемого значения из функции в коде jdbc. В prepareCall
я также пробовал синтаксис - {?:= call getBalance1(?)}
, но даже тогда получил то же Исключение.
Почему я получаю исключение?
Быстрое предположение: cs.getString ("1"); –