我已阅读了很多与此主题相关的帖子,但没有看到解决我的情况的帖子。基本上,我想插入一个新行,其中要插入的列数取决于insert语句的其中一个参数。下面是一些伪SQL来说明我正在尝试做的事情:
PARAMETERS
@CategoryID bigint,
@ChargeDate datetime2(7),
@Charge numeric(7,2),
@Mileage bigint,
@Gallons numeric(6,3),
@StartDate datetime2(7),
@EndDate datetime2(7)
IF @CategoryID = 1 THEN
INSERT INTO VehicleExpenses VALUES(@CategoryID, @ChargeDate, @Charge, @Mileage, @Gallons)
ELSEIF @CatgegoryID = 2 THEN
INSERT INTO VehicleExpenses VALUES(@CategoryID, @ChargeDate, @Charge)
ELSEIF @CatgegoryID = 3, 4 THEN
INSERT INTO VehicleExpenses VALUES(@CategoryID, @ChargeDate, @Charge, @StartDate, @EndDate)
ELSEIF @CatgegoryID = 5 THEN
...and so forth
首先,完成此任务的正确SQL是什么。其次,使用这种SQL方法可能有更好的方法吗?我的一个想法是只使用一个SQL语句并将NULL值传递给缺少的参数,但我无法弄清楚如何将VB值从VB调用传递给SQL存储过程。
先谢谢。
答案 0 :(得分:0)
但我无法弄清楚如何将VB值从VB调用传递给SQL存储过程。
将System.DBNull.Value作为参数的值。如果你仍然有问题显示你的VB的其余部分。您对参数值使用null
值并使用单个语句的想法确实是最好的方法,因为它会产生最少量的变量代码。