【发布时间】:2018-09-11 17:06:07
【问题描述】:
我有一张发票,它存储在两个表中,第一个表包含发票的一般信息,如发票编号、日期等。第二个表包含发票中购买的项目的详细信息,如项目名称、数量等等...
我想创建一个存储过程,首先插入发票的一般信息,然后循环遍历将在 datagridview 行中的发票项目,以将它们一一插入发票详细信息表中。在每个详细信息中插入数量库存中的项目已更新,因此这使我的存储过程可以处理 3 个 sql 查询。
我已经编写了一个存储过程,但是我陷入了在它自己的存储过程中编写循环语句的部分。任何人都可以帮忙!
Create proc [dbo].[AddNewSellDetails]
@invoiceNo int,
@invoice_date date,
@SELL_ID int,
@PRO_ID int,
@QUANTITY varchar(10),
@UNIT nvarchar(15),
@PRICE varchar(20),
@AMOUNT varchar(20),
@DISCOUNT varchar(20),
@FINAL_TOT varchar(30)
as
begin transaction
begin try
INSERT INTO Sell
(ID,sellDate) values (@invoiceNo,@invoice_date)
INSERT INTO Sell_Details
(Sell_ID
,Product_ID
,Quantity
,Unit
,Price
,Amount
,Discount
,Final_Tot)
VALUES
(@SELL_ID
,@PRO_ID
,@QUANTITY
,@UNIT
,@PRICE
,@AMOUNT
,@DISCOUNT
,@FINAL_TOT)
update Product set Product.Quantity = Product.Quantity - CONVERT(float,@QUANTITY)
where Product.Product_ID=@PRO_ID
commit transaction
end try
begin catch
rollback transaction
end catch
【问题讨论】:
-
这是另一个关于“用户定义表类型”的链接sqlservercentral.com/blogs/steve_jones/2012/09/19/…
-
@Mohammed Shfq,如果您在运行我的查询语句时遇到任何问题,请告诉我。谢谢。
标签: c# sql-server winforms stored-procedures transactions