0

こんにちは、休止状態から mssql ストアド プロシージャを実行しようとしています。プロシージャーには 8 つの入力パラメーターがあり、出力はありません。しかし、実行中に java.sql.SQLException: Parameter #9 has not been set が発生します。

<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

私の以前の提案が悪い:

https://forum.hibernate.org/viewtopic.php?f=1&t=986612によると

同じ問題を抱えている別の人は、クエリに対して「リターン」が定義されていなかったため、「? =」を削除することで解決しました。同じことを試してみることをお勧めします。

お役に立てれば。

于 2013-06-13T15:14:31.947 に答える
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 に答える