【发布时间】:2019-02-05 14:20:22
【问题描述】:
我正在尝试从 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 开始
-
谢谢,我也尝试从 1 开始 - com.microsoft.sqlserver.jdbc.SQLServerException: The index 0 is out of range.
-
如果你从 1 开始,则没有 index 0 这样的东西
标签: java liferay mssql-jdbc