Я бы лично высунул глаза перед использованием курсора, особенно когда вы можете передать набор значений (параметр табличных значений или CSV) одновременно за один вызов процедуры.
если вы работаете с SQL Server 2008, вы можете создать свою процедуру, используя Табличные параметры , и сможете передавать в таблицу INSERTED
.
Есливы используете SQL Server 2005, вы можете создать список значений, разделенных запятыми (csv), в переменной varchar (max) и передать это в вашу процедуру.
EDIT , воткак передать CSV
ALTER TRIGGER UpdateCurrentStock
ON StockIn
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CSV varchar(max)
SELECT @CSV=ISNULL(@CSV+',','')+ItemID From INSERTED
EXEC CalculateCurrentStock @CSV
END
сейчас, внутри вам нужно разделить значения @CSV, поэтому посмотрите здесь: Передайте структуру списка в качестве аргумента хранимой процедуре