我有两张桌子:
CREATE TABLE [dbo].[Accessoires1]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[Date] [datetime] NOT NULL,
[ClientID] [int] NOT NULL,
[TotalPrice] [varchar](50) NOT NULL
)
CREATE TABLE [dbo].[Accessoires2]
(
[Accessoire1_ID] [int],
[Date] [datetime] NOT NULL,
[ClientID] [int] NOT NULL,
[TotalPrice] [varchar](50) NOT NULL
)
然后我有一个存储过程Proc1
,它将值插入表Accessoire1
,我有Proc2
将数据添加到accessoires2
- 但它需要一个特定的{ {1}}
在我的C#代码中,我在同一时间执行这些程序,因此我需要将accessoire1_ID
插入Accessoires1.ID
- 我该如何设法做到这一点?
答案 0 :(得分:2)
在第一个程序中执行此操作:
CREATE PROCEDURE nameOfSp
@col1 VARCHAR(20),
@newId INT OUTPUT
AS
BEGIN
SET NOCOUNT ON
-- your code
-- assign identity to variable
SELECT @newId = SCOPE_IDENTITY()
RETURN
END
你的c#代码需要调用第一个存储过程并传递一个输出参数,如下所示:
SqlParameter newId = new SqlParameter();
newId.ParameterName = "@newId";
newId.DbType = DbType.Int32;
newId.Direction = ParameterDirection.Output;
执行第一个程序后,您的C#代码可以得到newId
返回的值,如下所示:
int outValue = (int) newId.Value;
现在你可以将它传递给你的第二个程序。