Я пытаюсь запустить хранимую процедуру для таблицы, а не одну строку. Я выбираю хранимую процедуру, поскольку мне нужно вставлять записи в таблицу и делать некоторые обновления. Этот метод, кажется, висит. Я рассмотрел план объяснения, но я думаю, что что-то не так с моей логикой, и оно обрабатывает одну запись и останавливается.Запуск хранимой процедуры для таблицы
Это код, который у меня есть до сих пор. Моя хранимая процедура работает как зверь, и я не думаю, что это проблема.
---- Create a driver table for the stored procedure to run off .
drop table #Driver_Table
select col1, col2
IDENTITY(int) AS idcol
INTO #Driver_Table
FROM CUSTOMER
--- Contains about 37 k records
--- Index added for performance
CREATE CLUSTERED INDEX IDX_C_Driver_Table_UserID ON #Driver_Table(idcol)
-- Define the last customer ID to be handled
DECLARE @LastCustomerID INT
SET @LastCustomerID = 0
--- Other parameter the queries will use
DECLARE @idcol INT
DECLARE @col1 datetime
DECLARE @col2 varchar(200)
SET @idcol= 0
-- Iterate over all customers
BEGIN
-- Get next customerId
SELECT TOP 1 @idcol = idcol FROM #Driver_Table
WHERE idcol > @LastCustomerID
select TOP 1 @col1=col1
FROM #Driver_Table
WHERE idcol > @LastCustomerID
select TOP 1 @col2=col2
FROM #Driver_Table
WHERE idcol > @LastCustomerID
---- To get the process to end when last customer is processed.
WHILE @col2 NOT NULL
-- call your sproc
EXEC SP @col1,@Col2
-- set the last customer handled to the one we just handled
SET @LastCustomerID = @idcol
SET @col2 = NULL
-- select the next customer to handle
SELECT TOP 1 @col2 = col2
FROM #Driver_Table
WHERE idcol > @LastCustomerID
END
SQL SERVER 2005
GO
Вы не можете «запустить хранимую процедуру для таблицы» - но вы можете изменить хранимую процедуру (или добавить новую), которая будет обрабатывать набор, а не все эта рабочая таблица temp/курсор занята. Если вы покажете определение SP, то кто-то может помочь вам в этом. –