[英]Getting a new record id return value from a stored procedure in Java
我需要在存儲過程中創建一個新記錄,並返回插入記錄的ID。 我敢肯定這很簡單,但我不知道正確的方法...
我創建了一個簡單的存儲過程,該過程需要3個參數,插入一條記錄並返回插入記錄的值:
ALTER PROCEDURE [dbo].[BronzeLabsCreateServiceEquipment]
@companyID int = null,
@manufacturerID int = null,
@modelID int = null,
@serialNumber varchar(255) = '',
@machine varchar(255) = '',
@location varchar(255) = ''
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO ServiceEquipment(CompanyID, ManufacturerID, ModelID, SerialNumber, Machine, Location)
VALUES (@companyID, @manufacturerID, @modelID, @serialNumber, @machine, @location)
Declare @new_identity int;
SELECT @new_identity = SCOPE_IDENTITY()
return @new_identity
END
然后我嘗試用Java來稱呼它
String queryStringAlt = "CALL dbo.BronzeLabsCreateServiceEquipment(?, ?, ?, ?, ?, ?)";
CallableStatement cs = conn.prepareCall(queryStringAlt);
cs.setString(1, null);
cs.setString(2, null);
cs.setString(3, null);
cs.setString(4, "new123-1");
cs.setString(5, "new123-2");
cs.setString(6, "new123-3");
ResultSet rs = cs.executeQuery();
...但是,准備好的語句不會返回結果集,因此最后一行不起作用。 它返回什么,如何獲得? 還是我在這里做錯了-我應該使用輸出參數(我曾嘗試過,但是遇到語法問題,我無法深入了解)。
謝謝你的幫助。 我沒有考慮過將身份放入結果集中,因此新代碼是:
ALTER PROCEDURE [dbo].[BronzeLabsCreateServiceEquipment]
@companyID int = null,
@manufacturerID int = null,
@modelID int = null,
@serialNumber varchar(255) = '',
@machine varchar(255) = '',
@location varchar(255) = ''
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO ServiceEquipment(CompanyID, ManufacturerID, ModelID, SerialNumber, Machine, Location)
VALUES (@companyID, @manufacturerID, @modelID, @serialNumber, @machine, @location)
SELECT SCOPE_IDENTITY() AS equipmentID
END
String queryStringAlt = "CALL dbo.BronzeLabsCreateServiceEquipment(?, ?, ?, ?, ?, ?)";
CallableStatement cs = conn.prepareCall(queryStringAlt);
cs.setString(1, null);
cs.setString(2, null);
cs.setString(3, null);
cs.setString(4, "new123-1");
cs.setString(5, "new123-2");
cs.setString(6, "new123-3");
ResultSet rs = cs.executeQuery();
if(rs.next()) {
System.out.println("Equipment ID: " + rs.getString("equipmentID"));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.