gpt4 book ai didi

java - 无法在 SQL Server 上使用 Java 和 JDBC 执行存储过程

转载 作者:行者123 更新时间:2023-12-01 05:59:04 24 4
gpt4 key购买 nike

我今天一直在尝试通过 JDBC 执行 MS SQL Server 存储过程,但到目前为止尚未成功。存储过程有 1 个输入参数和 1 个输出参数。在代码中设置存储过程调用时,我使用的每个组合都会收到一条错误,指出无法找到存储过程。我已经提供了我在下面执行的存储过程(注意:这是供应商代码,所以我无法更改它)。

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO


ALTER PROC [dbo].[spWCoTaskIdGen]
@OutIdentifier int OUTPUT
AS

BEGIN
DECLARE @HoldPolicyId int
DECLARE @PolicyId char(14)

IF NOT EXISTS
(
SELECT *
FROM UniqueIdentifierGen (UPDLOCK)
)
INSERT INTO UniqueIdentifierGen VALUES (0)

UPDATE UniqueIdentifierGen
SET
CurIdentifier = CurIdentifier + 1

SELECT @OutIdentifier =
(SELECT CurIdentifier
FROM UniqueIdentifierGen)
END

代码如下:

 CallableStatement statement = connection
.prepareCall("{call dbo.spWCoTaskIdGen(?)}");
statement.setInt(1, 0);
ResultSet result = statement.executeQuery();

我收到以下错误:严重:找不到存储过程“dbo.spWCoTaskIdGen”。

我也尝试过

    CallableStatement statement = connection
.prepareCall("{? = call dbo.spWCoTaskIdGen(?)}");
statement.registerOutParameter(1, java.sql.Types.INTEGER);
statement.registerOutParameter(2, java.sql.Types.INTEGER);
statement.executeQuery();

上述结果:严重:找不到存储过程“dbo.spWCoTaskIdGen”。

我也尝试过:

    CallableStatement statement = connection
.prepareCall("{? = call spWCoTaskIdGen(?)}");
statement.registerOutParameter(1, java.sql.Types.INTEGER);
statement.registerOutParameter(2, java.sql.Types.INTEGER);
statement.executeQuery();

上面的代码导致以下错误:找不到存储过程“spWCoTaskIdGen”。

最后,我还应该指出以下几点:

  1. 我已经使用了 MS SQL Server Management Studio 工具并且能够成功运行存储过程。下面提供了生成的执行存储过程的 sql:

    GO
    DECLARE @return_value int;
    DECLARE @OutIdentifier int;
    EXEC @return_value = [dbo].[spWCoTaskIdGen] @OutIdentifier = @OutIdentifier OUTPUT;
    SELECT
    @OutIdentifier [@OutIdentifier],
    @return_value [Return Value];
    GO
  2. 正在执行的代码使用与上面第 1 点中使用的相同的用户 ID 运行。

  3. 在创建 Connection 对象的代码中,我记录了我正在连接的数据库以及代码正在连接到正确的数据库。

有什么想法吗?

提前非常感谢您。

最佳答案

很可能其中之一......

  1. 所使用的凭据无权运行代码。你需要一个GRANT EXECUTE在上面的脚本中

  2. 数据库错误。例如,存储过程是在 master 中创建的,但您连接到“MyDB”

关于java - 无法在 SQL Server 上使用 Java 和 JDBC 执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com