0

你好我正在尝试从休眠中执行 mssql 存储过程。程序有 8 个输入参数,没有输出。但是我得到 java.sql.SQLException: Parameter #9 has not been set whuli execution。

<sql-query name="insertMyData" callable="true">
        { ? = call InsertMyData(?,?,?,?,?,?,?,?) }
</sql-query>

Java 调用

Query query = m_entityManager.createNamedQuery("insertMyData");
        query.setParameter(1, transaction.getGuid());
        query.setParameter(2, new Date());

...........指定的其他参数

存储过程

CREATE PROC dbo.insertMyData 
    @ID uniqueidentifier, 
    ...... 7 more parameters
AS 
BEGIN
    INSERT INTO dbo.TestData VALUES (
        @ID,
           ........ 7 more parameters

    )
END
4

2 回答 2

0

似乎您忽略了第一个?,并且在过程调用内部setParameter只调用了 8 次。?

这是你应该如何设置你的第一个参数:

statement.registerOutParameter(1, Types.VARCHAR); //Assuming statement is your CallableStatement and return type of procedure is Varchar
于 2013-06-13T15:16:45.720 回答
0

我对我之前的建议不好:

根据https://forum.hibernate.org/viewtopic.php?f=1&t=986612

另一个有同样问题的人,通过删除“?=”解决了这个问题,因为没有为查询定义“返回”。我建议你也试试。

希望这可以帮助。

于 2013-06-13T15:14:31.947 回答