java.sql.SQLException:尚未设置参数#9

时间:2013-06-13 15:10:51

标签: java sql-server hibernate

你好我正在尝试从hibernate执行mssql存储过程。过程有8个输入参数,没有输出。但是我得到java.sql.SQLException:参数#9没有被设置为执行。

<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

2 个答案:

答案 0 :(得分:0)

我对先前的建议不好:

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

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

希望这有帮助。

答案 1 :(得分:0)

好像你忽略了第一个?,并且在程序调用中setParameter只调用了? 8次。

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

statement.registerOutParameter(1, Types.VARCHAR); //Assuming statement is your CallableStatement and return type of procedure is Varchar