gpt4 book ai didi

sql - 我可以在 SQL 存储过程中分配变量吗?

转载 作者:行者123 更新时间:2023-11-29 03:55:25 25 4
gpt4 key购买 nike

我正在执行 SQL Insert 来填充我的表。我在一个表中有一个生成的唯一 ID,我想在另一个表中用于我的连接。这可能吗?

.NET MVC--

using (SqlConnection connect = new SqlConnection(connections))
{
SqlCommand command = new SqlCommand("ContactInfo_Add", connect);
command.Parameters.Add(new SqlParameter("name", name));
command.Parameters.Add(new SqlParameter("address", address));
command.Parameters.Add(new SqlParameter("Product", name));
command.Parameters.Add(new SqlParameter("Quantity", address));
command.Parameters.Add(new SqlParameter("DueDate", city));
connect.Open();
command.ExecuteNonQuery();
}

SQL 服务器 --

ALTER PROCEDURE [dbo].[Contact_Add]
@name varchar(40),
@address varchar(60),
@Product varchar(40),
@Quantity varchar(5),
@DueDate datetime
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO DBO.PERSON
(Name, Address) VALUES (@name, @address)
INSERT INTO DBO.PRODUCT_DATA
(PersonID, Product, Quantity, DueDate) VALUES (@Product, @Quantity, @DueDate)
END

代码插入正常。我如何提取自动生成的 PersonID 以在 PRODUCT_DATA 中使用?

最佳答案

您不需要使用 SCOPE_IDENTITY(),使用 OUTPUT 和单个 INSERT 语句!
这确实需要 SQL Server 2005 及更高版本

试试这个:

设置表格

CREATE TABLE Test1 (PersonID int identity(1,1), Name varchar(40), Address varchar(60))
CREATE TABLE Test2 (PersonID int, product varchar(40),Quantity varchar(5),DueDate datetime)

创建程序

CREATE PROCEDURE TestSP
@name varchar(40),
@address varchar(60),
@Product varchar(40),
@Quantity varchar(5),
@DueDate datetime
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO Test1
(Name, Address)
OUTPUT INSERTED.PersonID, @Product, @Quantity, @DueDate
INTO Test2
VALUES
(@name, @address)

END

测试代码

exec TestSP 'name','address','product',123,'1/1/2010'
select * from Test1
select * from Test2

输出

PersonID    Name                 Address
----------- -------------------- -----------------------
1 name address

(1 row(s) affected)

PersonID product Quantity DueDate
----------- --------- -------- -----------------------
1 product 123 2010-01-01 00:00:00.000

(1 row(s) affected)

关于sql - 我可以在 SQL 存储过程中分配变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2585723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com