如何从Java调用MSSQL存储过程

时间:2019-02-05 14:20:23

标签: java liferay mssql-jdbc

我正在尝试从Java调用存储过程,但是在使调用正确进行方面遇到一些问题。我查看了许多示例,但它们与我要调用的存储过程的语法不匹配。

    STORED PROCEDURE CODE
    ------------------------
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[getMgr]
    @UserID as varchar(5),
    @ModeType as char(1)
    AS
    BEGIN
    SELECT usermgrid from AllEmployees WHERE (ModeType = @ModeType AND UserID = 
    @UserID)
    END
JAVA CODE
----------------------------
    connection = getConnection();
    cs = connection.prepareCall("{call lvhsp_GetManager(?, ?) }");
    cs.setString(0, someUserID);
    cs.setString(1, "0");
    ResultSet resultSet = cs.executeQuery();

我尝试了多种不同的方式调用存储过程,但是我仍然遇到错误。

当我这样称呼它时,我得到:

com.microsoft.sqlserver.jdbc.SQLServerException:索引0超出范围。

我认为这是因为这不是传递参数的正确方法。

我还尝试使用带有和不带有@的参数名称(UserID,ModeType)来调用它,但这不起作用。

我想念什么?

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

cs.setString(1, someUserID);
cs.setString(2, "0");