如何插入具有不同数量参数的新行

时间:2016-12-02 09:57:03

标签: sql-server vb.net

我已阅读了很多与此主题相关的帖子,但没有看到解决我的情况的帖子。基本上,我想插入一个新行,其中要插入的列数取决于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存储过程。

先谢谢。

1 个答案:

答案 0 :(得分:0)

  

但我无法弄清楚如何将VB值从VB调用传递给SQL存储过程。

System.DBNull.Value作为参数的值。如果你仍然有问题显示你的VB的其余部分。您对参数值使用null值并使用单个语句的想法确实是最好的方法,因为它会产生最少量的变量代码。