簡體   English   中英

如何從休眠中的存儲過程中獲取OUTPUT值(SQL SERVER)

[英]How to get OUTPUT value from stored procedure in hibernate (SQL SERVER)

我在MS SQL Server存儲過程

CREATE PROC dbo.insertData 
    @param1 nvarchar(11),
    @param2 nvarchar(30),
    @ID bigint OUTPUT
AS 
BEGIN   
    INSERT INTO dbo.Adaptor (Col1, Col2) VALUES (@param1, @param2)
    SET @ID = SCOPE_IDENTITY(); 
END

我想在java中將此生成的ID作為輸出參數。

我創建了一個映射文件

<sql-query name="insertData" callable="true">
    <return alias="adaptor" class="MyClass">
        <return-property name="id" column="ID" />
    </return>
    { ? = call InsertData(:param1, :param2) }
</sql-query>

並嘗試從java執行它

  Query query = entityManager.createNamedQuery("insertData");

            query.setParameter("param1", object);
            query.setParameter("param2", getName());
            // TODO try to use getSingleResult in tests
            List result = query.getResultList();

但我有異常java.sql.SQLException:參數#3尚未設置

如果我刪除? 我得到了

java.sql.SQLException:過程或函數'insertData'需要參數'@ID',這是未提供的。

有誰知道代碼/映射文件應該是什么樣的? 提前致謝

Query query = session.createSQLQuery(
    "CALL GetStocks(:stockCode)")
    .addEntity(Stock.class)
    .setParameter("stockCode", "7277");

List result = query.list();
for(int i=0; i<result.size(); i++){
    Stock stock = (Stock)result.get(i);
    System.out.println(stock.getStockCode());
}

從這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM