我正在做预订申请,并想知道我将如何处理以下情况;如果预订上有2个或更多“额外”项目,我如何创建一个SP或触发器甚至处理这个? SP我现在已经可以预订,只需要一个额外的项目。我有意义吗?
ALTER PROCEDURE [dbo].[CreateBooking]
@DateFrom datetime,
@DateTo datetime,
@RoomID int,
@PersonID int,
@ProductID int,
@OrderAmount int
AS
BEGIN TRANSACTION
SET NOCOUNT ON;
INSERT INTO booking(created_on, startdate, enddate, room_id, person_id)
VALUES (getdate(), @DateFrom, @DateTo, @RoomID, @PersonID)
IF @@error <> 0
ROLLBACK TRANSACTION
ELSE
INSERT INTO booking_details (booking_id,prod_id,order_amount)
VALUES (SCOPE_IDENTITY(), @ProductID, @OrderAmount)
COMMIT TRANSACTION
答案 0 :(得分:0)
您可以传递一个xml参数,然后遍历它并编写它们。
创建程序 SelectByIdList(@productIds xml)AS
DECLARE @Products TABLE(ID int)
INSERT INTO @Products(ID)SELECT ParamValues.ID.value( ' '' VARCHAR(20)') FROM @ productIds.nodes('/ Products / id') 作为ParamValues(ID)
SELECT * FROM 产品INNER JOIN @Products p ON Products.ProductID = p.ID