2014-12-05 2 views
0

두 번째 테이블에 데이터가 있으면 다른 테이블의 정보 Order_TruckDelivery 정보를 사용하여 테이블을 업데이트해야하는 저장 프로 시저에서 작업하고 있습니다 Basket_TruckDelivery. 각 테이블에는 두 개의 열, intiddatetimeTruckDeliveryDate이 있습니다. Basket_TruckDelivery에 현재 바구니 id에 대해 저장된 날짜가있는 경우 해당 날짜를 Order_TruckDelivery 테이블에 삽입하십시오. Basket_TruckDelivery 테이블에 무엇이든이있는 경우INSERT 저장 프로 시저에 대한 NULL 값 금지

는 지금의 INSERT에 관계없이 실행됩니다, 이것은 Order_TruckDelivery 열에서 TruckDelveryDate 열에 대해 NULL 값을 초래한다. 나는 이런 일이 일어나지 않도록하고 싶지만 어떻게 확신 할 수는 없다. 기본적으로, 수행하고자하는 경우에만 의 TruckDeliveryDate 값이 비어 있거나 null이 아닌 경우 을 Order_TruckDelivery 테이블에 넣고 싶습니다. 그것은 나타납니다

ALTER PROCEDURE [dbo].[SaveTruckIntoOrder] 
    @BasketID INT, 
    @OrderID INT 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    DECLARE 
     @TruckDeliveryDate DATETIME 

    IF(EXISTS(SELECT uidBasket FROM [Basket_TruckDelivery] WHERE [uidBasket] = @BasketID)) 
    BEGIN 
     SELECT 
      @TruckDeliveryDate = [TruckDeliveryDate] 
     FROM 
      [Basket_TruckDelivery] 
     WHERE 
      [uidBasket] = @BasketID 
    END 

    BEGIN 
     INSERT INTO [Order_TruckDelivery] ([uidOrder], [TruckDeliveryDate]) 
     VALUES (@OrderID, @TruckDeliveryDate) 
    END 
END 
+0

....

내가 저장 프로 시저와 함께 많은 작업을 수행하지 않은 ... 지금까지 무엇을, 그래서 내가 놓친 한 것을 확실하지 않다 SELECT 문과 INSERT 문 사이의 END 및 BEGIN 문은 없어야합니다. INSERT 문은 그 때문에 항상 실행되고 있습니다. – Rono

+2

그냥 INSERT 검사를 위해 IF를 사용합니다. blahDATE is not NULL – Mihai

+0

Mihai, 그게 분명히 필요한 모든 것 ... 모든 것이 이제는 잘된 것처럼 보입니다. –

답변

0
ALTER PROCEDURE [dbo].[SaveTruckIntoOrder] @BasketID INT 
    ,@OrderID INT 
AS 
BEGIN 
    SET NOCOUNT ON; 

    DECLARE @TruckDeliveryDate DATETIME 

    IF (
      EXISTS (
       SELECT uidBasket 
       FROM [Basket_TruckDelivery] 
       WHERE [uidBasket] = @BasketID 
       ) 
      ) 
    BEGIN 
     SELECT @TruckDeliveryDate = [TruckDeliveryDate] 
     FROM [Basket_TruckDelivery] 
     WHERE [uidBasket] = @BasketID 
    END 

    IF (
      @TruckDeliveryDate IS NOT NULL 
      AND @TruckDeliveryDate != '' 
      ) 
    BEGIN 
     INSERT INTO [Order_TruckDelivery] (
      [uidOrder] 
      ,[TruckDeliveryDate] 
      ) 
     VALUES (
      @OrderID 
      ,@TruckDeliveryDate 
      ) 
    END 
END 
관련 문제