我正在處理遺留項目,需要插入一行並返回該行或其標識。返回使用sql存儲過程插入的行的標識
新行以正確的值插入,只有在返回到.net時,數據集中才會返回任何內容。
我試過選擇@@identity
,RETURN
,OUTPUT
,但我試過的一切數據集都是空的(但不是空的)。
這不是MyUtils.DBHelper.GetDataSet
的錯,因爲它在其他地方使用並執行並返回正常。
USE [dbname]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[DuplicateOrder]
(
@sourceid int,
@var1 int,
@var2 decimal(10,2),
)
AS
INSERT INTO OrderHeader (
Users_ID,
Stores_ID,
)
SELECT
@var1,
@var2
FROM Order
WHERE id = @sourceid
GO
我使用執行存儲過程的代碼是:
Using cmd As New SqlCommand("DuplicateOrder") With {.CommandType = CommandType.StoredProcedure}
cmd.Parameters.AddWithValue("@sourceid", sourceId)
cmd.Parameters.AddWithValue("@var1 ", var1)
cmd.Parameters.AddWithValue("@var2 ", var2)
ds = MyUtils.DBHelper.GetDataSet(cmd)
End Using
如何你有沒有試過選擇@@身份?除非您處於多連接環境中,否則這通常很適用 – Grantly