0

我正在使用 3 个表tblproducttblstock并且tblwinkel.

表中有外键productid和。winkelidtblstock

tblstock表也有一个字段stock,它是一个整数。

我只想拥有 1 条具有相同组合的 2 个外键winkelidproductid. 该记录的股票价值包含所有其他具有相同外键组合winkelid和的记录的总和productid

所以,我试图删除所有其他具有相同 2 个外键的记录,所以我只保留 1 个。

我的存储过程不断给出以下错误:

消息 155,级别 15,状态 2,过程 uspRecordsSamenvoegen,第 11 行
“int”不是公认的 CURSOR 选项。

请帮忙?

到目前为止,这是我的存储过程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE uspRecordsSamenvoegen 

@winkelid int, @productid int
AS
BEGIN
declare stocktotaal int

    SET NOCOUNT ON

select sum(Stock) into stocktotaal from TblStock where WinkelId = @winkelid and ProductId = @productid;
delete from TblStock where WinkelId = @winkelid and ProductId = @productid;
insert into TblStock values(@winkelid, @productid, stocktotaal);

END
GO
4

2 回答 2

2
declare stocktotaal int

需要是

declare @stocktotaal int

如果没有“@”来声明变量,则 sql 解析器正在寻找设置游标。此外,您不能选择变量。您的选择应如下所示:

select @stocktotaal = sum(stock) from ...
于 2013-05-21T20:04:05.607 回答
0

所以你的结果将被捕获:

select WinkelId, ProductId, sum(Stock) as stocktotaal 
from TblStock
group by WinkelId, ProductId
于 2013-05-21T20:02:46.747 回答