create  PROCEDURE str_getanswer1(@PVNO VARCHAR(8))
AS
BEGIN
declare @answer INT;
IF (@PVNO='abc')
BEGIN 
SET @answer=8
END
ELSE
BEGIN 
SET @answer=7
END RETURN @answer
END
后台java代码 怎么取得@answer返回值
cs = conn.prepareCall("{call str_getanswer(?)}");不知道怎么取得返回值

解决方案 »

  1.   

    你先把存储过程写对了再说。out 是存储过程return是函数
      

  2.   

          cstmt = conn.prepareCall("begin  test(?,?); end;");  
          cstmt.setInt(1, deptno);  
          cstmt.registerOutParameter(2, OracleTypes.CURSOR);   
          cstmt.execute();  
          rs = (ResultSet) cstmt.getObject(2);  
          ResultSetMetaData rsm = rs.getMetaData();  
          int columnCount = rsm.getColumnCount();  
          while (rs.next()){  
             for (int j=0;j< columnCount;j++){  
                temp = rs.getObject(j+1);  
             }  
          }
      

  3.   

    callableStatement = connection.prepareCall("{ call zhangbo.pro_input_output(?,?) }");
    callableStatement.setInt(1, 7521);//输入参数
    callableStatement.registerOutParameter(2, Types.VARCHAR);//输出参数
    callableStatement.execute();//执行存储过程
    String name = callableStatement.getString(2);//获取输出参数
    System.out.println("编号7521的员工姓名为: " + name);
    这是我写的一个调用存储过程的Java代码,第一个参数是输入参数,第二个参数是输出参数,LZ参考下
      

  4.   

    存储过程肯定成功啦    关键是 现在java代码调用的时候 需要传一个输入参数 和 一个注册的返回参数我存储过程中 就一个参数   按照你的写法是可以的 但是需要在存储过程后面增加一个 output 参数 现在不能修改这个存储过程
      

  5.   

    试试看看。
    SELECT 'Return Value' = @answer
     prepareStatement("{call xxxx(?)}"); 
    stmt.setString(1, customerId);
    rs = stmt.executeQuery();
    if (rs.next()) {
    rs.getString("Return Value");  
    }                       
      

  6.   

    十分感谢大家啊  原来不难得  cs = conn.prepareCall("{ ? = call str_getanswer1(?) }");
    其实这样就可以了 后边的带参数  ?=返回值cs.registerOutParameter(1,java.sql.Types.INTEGER);  只需要把第一个问号注册一下