0

私は 3 つのテーブルを使用してtblproducttblstockますtblwinkel

テーブルには外部キーproductidwinkelidがありtblstockます。

tblstockテーブルにはフィールドもstockあり、これは整数です。

winkelid2 つの外部キーとの同じ組み合わせを持つ 1 つのレコードのみが必要ですproductid。このレコードの在庫値には、 と の同じ外部キーの組み合わせを持つ他のすべてのレコードの合計が含まれ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 に答える