我正在使用ms visual studio 2012和ms sql 2012。
在我的asp.net VB页面上,我有4个文本框,用户可以输入值并单击插入。然后将这些值与日期,用户名和整数一起传递给sql,子例程执行第一个文本框值,然后传递第二个,依此类推。
我的问题在于存储过程。我使用IF不存在来查看表中的当前数据,如果没有匹配日期和整数的数据,那么它将插入记录。然后VB子将传递第二组数据,它将再次查看日期是否与整数一起出现,依此类推。存储过程如下:
@price money,
@datesubmitted datetime,
@commodityID int,
@submitted_By nvarchar(10)
As
begin
if not exists ((select * from dailyPricing where (convert(date, datesubmitted, 103) = convert(date, @datesubmitted, 103) and commodityID = 1)
or
(convert(date, datesubmitted, 103) = convert(date, @datesubmitted, 103) and commodityID = 2)
or
(convert(date, datesubmitted, 103) = convert(date, @datesubmitted, 103) and commodityID = 3)
or
(convert(date, datesubmitted, 103) = convert(date, @datesubmitted, 103) and commodityID = 4)))
Begin
INSERT INTO dailyPricing (price, datesubmitted, commodityID, submitted_By)
values(@price, @datesubmitted, @commodityID, @submitted_By)
end
end
上述结果是它只输入第一组值而不是第二组,第三组或第四组。我已经调试了我的VB代码并且它正常工作我只是认为我没有正确地构建SQL。
答案 0 :(得分:1)
我认为您需要为每次检查重写“不存在”,尝试这样的事情,我认为您需要更新它们可能错误的括号:
if not exists ((select * from dailyPricing where
(convert(date, datesubmitted, 103)
= convert(date, @datesubmitted, 103) and commodityID = 1)
或
if not exists ((select * from dailyPricing where
(convert(date, datesubmitted, 103)
= convert(date, @datesubmitted, 103) and commodityID = 2)
或 ....