2010-05-26 4 views
0

Простой вопрос о хранимых процедурах.Сохраненная процедура: уменьшение данных таблицы

У меня есть одна хранимая процедура, собирающая целую кучу данных в таблице. Затем я вызываю эту процедуру из другой хранимой процедуры. Я могу скопировать данные в новую таблицу, созданную в вызывающей процедуре, но насколько я вижу, таблицы должны быть одинаковыми.

Это право? Или есть способ вставить только те данные, которые я хочу?

Например ....

У меня есть одна процедура, которая возвращает это:

ВЫБОР @batch, как Batch, @count, как Кол-во, pd.Location, броском (pd.GL как десятичная (10,3)) как [Длина], литье (pd.GW как десятичное (10,3)) в виде ширины, литье (pd.GT как десятичное (10,3)) как Толщина FROM propertydata pd ГРУППА ПО pd.Location, pd.GL, pd.GW, pd.GT

Я затем вызвать эту процедуру, но только хотите следующие данные:

DECLARE @BatchTable ТАБЛИЦА ( Пакетный VARCHAR (50), [Длина] десятичное (10,3) , Ширина десятичной (10,3), Толщина десятичное (10,3), )

ВСТАВИТЬ @BatchTable (партия, [Длина], ширина, толщина) ВЫПЛН dbo.batch_drawings_NEW @batch

S o во второй команде мне не нужны значения Qty и Location.

Однако выше код постоянно возвращается сообщение об ошибке:

«Вставить Ошибка: Имя столбца или количество предоставленных значений не соответствует таблице»

ответ

1

Таблицы не должны быть идентичными, результаты запрос из первого хранимого proc должен соответствовать столбцам, определенным во втором, а они нет.

Вам необходимо изменить первую хранимую процедуру, чтобы не возвращать количество и местоположение.

Select Batch, [Length], Width, Thickness FROM (
SELECT @batch as Batch, @Count as Qty, pd.Location, cast(pd.GL as decimal(10,3)) as [Length], cast(pd.GW as decimal(10,3)) as Width, cast(pd.GT as decimal(10,3)) as Thickness 
FROM propertydata pd GROUP BY pd.Location, pd.GL, pd.GW, pd.GT) 
+1

Не могли бы вы выбрать столбцы для вставки с выхода первой хранимой процедуры? Я не могу вспомнить синтаксис, но что-то вроде 'INSERT @BatchTable (Batch, [Length], Width, Thickness) (выберите Batch, [Length], Width, Thickness From EXEC dbo.batch_drawings_NEW) @ batch' или' SELECT Batch, [Длина], Ширина, Толщина INTO @BatchTable FROM EXEC dbo.batch_drawings_NEW) @ batch'? – Lazarus

+0

Я считаю, что вы тоже можете это сделать. Я не уверен, насколько согласован между DB. –

+0

Извините, я должен был быть более ясным. Я хочу ВЫБРАТЬ все эти свойства в первой процедуре, потому что я хочу использовать ее в других процедурах, которые могут потребовать дополнительные данные. Просто процедура вызова в этом примере не требует некоторых из них. Я думал, а не вставлял все в новую таблицу, могу ли я вставить ее? У меня есть выбор в SELECTing столбцов для INSERT. Cheers. – SumGuy

Смежные вопросы