0

私はこのストアドプロシージャを持っています:

ALTER PROCEDURE dbo.getRegionsInArea
    (
    @areaID int,
    @ID int OUTPUT,
    @name varchar(50) OUTPUT
    )
AS
BEGIN
    SET NOCOUNT ON
    SELECT @ID = [ID], @name = [name] FROM Region
    WHERE areaID = @areaID
    END

から呼び出したいJDBC

疑問

変数出力のすべての値を取得する方法とIDnameストアド プロシージャがそれらの多くの値を返すためです。

私が試したこと

Connection con = Database.getConnection();
            String storedProcedure = "{call getRegionsInArea (?,?,?)}";
            CallableStatement callableStatement = null;
            try {
                callableStatement = con.prepareCall(storedProcedure);
                callableStatement.setInt(1, getID());
                callableStatement.registerOutParameter(2,
                        java.sql.Types.INTEGER);
                callableStatement.registerOutParameter(3,
                        java.sql.Types.VARCHAR);
                callableStatement.execute();
                    System.out.println("ID = " + callableStatement.getInt(2));
                    System.out.println("name = "
                            + callableStatement.getString(3));

問題

と の最後の値を受け取るだけIDですname

助けてください

4

1 に答える 1

2

この解決策を試してください:

callableStatement = con.prepareCall(storedProcedure); 
callableStatement.setInt(1, getID()); 
callableStatement.execute(); 
ResultSet resultSet = callableStatement.getResultSet(); 
while (resultSet.next()) { 
   int returnedID = resultSet.getInt(1); 
   String returnedName = resultSet.getString(2);   
}

SPを次のように変更します。

ALTER PROCEDURE dbo.getRegionsInArea 
( 
@areaID int
) 
AS 
BEGIN 
SET NOCOUNT ON 
SELECT [ID],[name] FROM Region 
WHERE areaID = @areaID 
END
于 2013-04-29T08:07:47.260 に答える