Мне нужно сохранить набор результатов хранимой процедуры во временной таблице (с использованием SQL Server
2000). Из того, что я прочитал, этот (плохо построенный пример) должен работать:
create table #tempTable (TempId int primary key, Column1 varchar(100),
Column2 varchar(100), DateCreated datetime)
insert into #tempTable (TempId, Column1, Column2, DateCreated)
exec sproc_Select_Stuff_By_DateCreated @Date1 = '1/1/2009', @Date2 = '1/2/2009'
Но я получаю:
«Ошибка вставки: имя столбца или количество предоставленных значений не соответствуют определению таблицы.»
Изучение процедуры (которую я не могу отредактировать) показывает следующее:
CREATE PROCEDURE sproc_Select_Stuff_By_DateCreated
@Date1 datetime,
@Date2 datetime
AS
BEGIN
SELECT TempId, Column1, Column2, DateCreated
FROM ReallyHugeMessOfJoinsAndCalculatedColumns
WHERE DateCreated between @Date1 and @Date2
SELECT @Date1 as Date1, @Date2 as Date2
END
Так что на самом деле он возвращает параметры, переданные в него как второй набор результатов. (Я понятия не имею, почему; я подумал, что любой, вызывающий процедуру, будет знать, какие данные он передает.)
Мое тестирование заставляет меня думать, что второй набор результатов является причиной сбоя вставки - как SQL пытается объединить наборы результатов вместе и терпит неудачу.
Мне нужен только первый набор результатов, сохраненный в моей временной таблице. Как я могу это сделать?
Редактировать
Спасибо за указание хранимых процедур CLR, но эта функция была введена в SQL 2005 - она не будет работать в 2000 году. (Но я раньше не знал о них, и они выглядят так, как будто они будут полезны, когда мы обновить.)
Поскольку единственные другие ответы выглядят так: «Вы не можете» - я думаю, что я вернулся к чертежной доске.