使用存储过程为同一类别中的所有产品更改价格
问题描述:
我需要创建一个存储过程,以更改具有相同类别的所有项目的价格。我只能使用2个输入参数; @artikelcategorie
(类别)和@ingangsdatum
(价格更改将开始日期)。使用存储过程为同一类别中的所有产品更改价格
如果您输入'lux'
(类别)和'10-19-2017'
(日期),例如它应该将该类别的所有商品的价格上调10%。
我完全停留在这一点上。
数据库看起来像这样;
目前我有这个作为SQL代码
IF EXISTS (SELECT * FROM sys.objects WHERE type ='P' AND name = 'spVerhoogPrijzen')
DROP PROCEDURE spVerhoogPrijzen
GO
CREATE PROCEDURE spVerhoogPrijzen
(
@artikelcategorie varchar(3),
@ingangsdatum date
)
AS
BEGIN
BEGIN TRANSACTION
UPDATE artikelprijs SET einddatum = DATEADD(DAY, -1, @ingangsdatum)
WHERE catcode = @artikelcategorie AND einddatum > @ingangsdatum;
IF @@ERROR <> 0
BEGIN
ROLLBACK
RAISERROR ('Error', 16, 1)
RETURN
END
--INSERT INTO artikelprijs VALUES (?, ?, @ingangsdatum, '2099-12-31')
COMMIT
END
GO
答
如何像这样
UPDATE ap SET
ap.einddatum = DATEADD(DAY, -1, @ingangsdatum),
ap.prijs = ap.prijs*1.1
FROM artikelprijs AP
JOIN artikel a on a.artikelnr = ap.artikelnr
WHERE a.catcode = @artikelcategorie AND einddatum > @ingangsdatum;
但是你有一个begindatum和enddatum,也许你会插入一个新记录而不是更新
+0
对我来说插入一个新行确实更好。感谢您的解决方案,我会检查我是否可以适应。 –
第一部分将无法正常工作。 'artikelprijs'没有列'catcode'。 –
@HamletHakobyan是否有可能在存储过程中加入表格呢? –
是的,[UPDATE(Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/queries/update-transact-sql) –