Хранимая процедура: сокращение табличных данных - PullRequest
0 голосов
/ 26 мая 2010

Простой вопрос о хранимых процедурах.

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

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

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

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

ВЫБРАТЬ @ партия как партия, @ Считать как кол-во, pd.Location, приведение (pd.GL как десятичное число (10,3)) как [длина], приведение (pd.GW как десятичное число (10,3)) как ширина, приведение (pd.GT как десятичное число (10,3)) как толщина ОТ свойстваdd pd ГРУППА ПО pd.Location, pd.GL, pd.GW, pd.GT

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

ОБЪЯВИТЬ @BatchTable TABLE ( Пакетный варчар (50), [Длина] десятичная (10,3), Ширина десятичная (10,3), Десятичная толщина (10,3), )

INSERT @BatchTable (Пакет, [Длина], Ширина, Толщина) EXEC dbo.batch_drawings_NEW @ batch

Так что во второй команде я не хочу значения Qty и Location.

Однако приведенный выше код продолжает возвращать ошибку:

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

1 Ответ

1 голос
/ 26 мая 2010

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

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

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) 
...