【发布时间】:2019-02-28 08:39:36
【问题描述】:
存储过程已创建,但当我尝试调用它时,它不会插入和/或更新任何内容。
这是我的代码:
use KlantArtikelMathijs
GO
alter procedure SPVerhoogPrijzen
@catcode varchar(32),
@ingangsdatum date
as
begin
declare @artikelnr int;
declare @prijs decimal(8,2);
if(@ingangsdatum < GETDATE())
raiserror('deze datum is in het verleden, kies een andere datum', 16,1)
return
if(@catcode not in (select catcode from artikel))
raiserror('Deze categorie bestaat niet, maak eerst een artikel met deze categorie aan', 16 , 1)
return
declare @counter int = 0
while @counter < (select count(artikelnr) from artikel where catcode = @catcode)
begin
set @artikelnr = (select artikelnr from artikel where catcode = @catcode)
set @prijs = (select sum(prijs*1.1) from artikelprijs where artikelnr = @artikelnr)
update artikelprijs
set einddatum = dateadd(day,-1,@ingangsdatum)
where artikelnr = @artikelnr
insert into artikelprijs (artikelnr, prijs, begindatum, einddatum)
values (@artikelnr, @prijs, @ingangsdatum, '2099-12-31')
set @counter = @counter + 1
if @counter = 3
begin
break
end
end
end
首先,我检查“ingangsdatum”(日期)是否大于数据库中已有的日期(这是必要的)。之后我检查类别代码是否在数据库中(这也是必要的)。
然后我更新一个表并插入另一个表。
我正在使用循环,因为 select 语句返回超过 1 条记录。
【问题讨论】:
-
哪个 dbms? (sql server?)
-
是的,微软Sql管理工作室
-
是否显示任何错误信息?
-
不,它没有....
标签: sql-server stored-procedures while-loop sql-update sql-insert