我正在尝试从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)来调用它,但这不起作用。
我想念什么?
答案 0 :(得分:1)
尝试以下方法:
cs.setString(1, someUserID);
cs.setString(2, "0");