0
我正在研究一个存储过程,如果第二个表有任何数据,则该存储过程应该使用来自另一个表Basket_TruckDelivery
的信息更新表Order_TruckDelivery
。每个表中有两列:int
id
和datetime
列,名为TruckDeliveryDate
。如果Basket_TruckDelivery
有一个为当前购物篮ID存储的日期,则将该日期插入Order_TruckDelivery
表中。防止为存储过程插入NULL值
眼下,INSERT
会执行,无论是否有在Basket_TruckDelivery
表什么,这导致在Order_TruckDelivery
列TruckDelveryDate
列NULL值。我想阻止这种情况发生,但我不完全确定如何。基本上,我只想执行INSERT
到Order_TruckDelivery
表中,如果Basket_TruckDelivery
中的TruckDeliveryDate
的值不为空或为空。
这是我迄今为止...我没有做什么工作,存储过程,所以我不知道我已经错过了....
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
看来, SELECT和INSERT语句之间的END和BEGIN语句不应该在那里。因此,INSERT语句总是在运行。 – Rono 2014-12-05 21:03:57
只需使用anotehr IF用于INSERT检查blahDATE不为NULL – Mihai 2014-12-05 21:04:24
Mihai,这显然是我需要的一切......现在一切似乎都很顺利。 – 2014-12-05 21:17:02