存储过程返回null到结果集

时间:2016-08-31 13:37:25

标签: java stored-procedures jdbc resultset callable-statement

在使用JDBC时,我遇到了一个问题,我在mysql中创建了一个表,其中包含员工信息Employee_Id,Name,City,Salary和Year_of_joining,我还创建了一个存储过程到同一个数据库,该数据库需要两个输入并更新员工的工资以加入年份为基础。这是存储过程:

CREATE PROCEDURE proc(IN var1, IN var2)
BEGIN
  UPDATE "TABLE" SET Salary=var1+Salary WHERE Year_of_Joining= var2
END

现在我创建了一个通过java到mysql数据库的数据库连接(该连接正在成功建立)

但是现在,当我在创建CallableStatement对象后执行查询并尝试将可调用对象的当前结果转换为Result set时,我得到null。请帮我解决一下这个。 这是代码:

// Creates connection with java:
Connection con= DriverManager.getConnection(url,username,pswrd);

// Now Calling the Stored procedure from mysql
CallableStatement col =  con.prepareCall("{call proc(?,?)}");

// gave values to the procedure
col.setDouble(1,20000);
col.setInt(2,2012);
col.execute();

// Returning Result set=null
ResultSet rs = col.getResultSet();

1 个答案:

答案 0 :(得分:2)

  
      
  1. 首先,您尚未在存储过程中设置输出参数。
  2.         

    喜欢:

    CREATE PROCEDURE proc(IN inputParam VARCHAR(255), OUT OutParam INT)...
    
         

    然后,检索输出参数的值(参数   在创建存储过程时指定为OUT或INOUT,JDBC   要求在语句执行之前使用   CallableStatement中的各种registerOutputParameter()方法   接口

    col.registerOutParameter("OutParam", Types.INTEGER);
    
  
      
  1. 其次,UPDATE语句不返回ResultSet!只有SELECT语句返回一个ResultSet才能进行操作。
  2.