我正在处理遗留项目,需要插入一行并返回该行或其标识。返回使用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