0

ストアド プロシージャで新しいレコードを作成し、挿入されたレコードの 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();

...ただし、準備されたステートメントは結果セットを返さないため、最後の行は機能しません。それは何を返しますか、どうすれば取得できますか? それとも、ここで間違ったことをしているのですか - 出力パラメーターを使用する必要があります (試してみましたが、構文の問題があり、最後までたどり着けませんでした)。

4

1 に答える 1