2011-04-10 4 views
0

Je fais une application de réservation et je me demandais comment je gérer le scénario suivant; Si une réservation a 2 ou plusieurs éléments «supplémentaires», comment puis-je créer un SP ou un déclencheur, même pour gérer cela? le SP j'ai maintenant fonctionne bien pour une réservation avec un seul élément supplémentaire sur elle. Im je fais du sens?Insérer dans deux tables avec des conditions

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

pouvez-vous clarifier votre question s'il vous plaît ... Demandez-vous comment passer une liste à proc stocké? Si oui, demandé plusieurs fois avant ... –

+0

BTW, 'SET NOCOUNT ON'; devrait être en dehors de la TRANSACTION BEGIN –

+0

@Mitch ouais c'est exactement ce que je demandais, je ne savais pas comment demander. J'ai cherché et trouvé la réponse maintenant de toute façon. Merci - j'ai maintenant le "NOCOUNT" au bon endroit. – Shuffz

Répondre

0

Vous pouvez passer un paramètre XML puis le parcourir et l'écrire.

CREATE PROCEDURE SelectByIdList (@productIds xml) AS

DECLARE @Products TABLE (ID int)

INSERT INTO @Products (ID) SELECT ParamValues.ID.value ('' , 'VARCHAR (20)') de @ productIds.nodes ('/ Produits/id') comme ParamValues ​​(ID)

SELECT * FROM Produits INNER JOIN @Products p ON Products.ProductID = p.ID

Questions connexes