Страница 1 из 1
UNION в ХП. Работать не хочет!
Добавлено: 22 фев 2005, 17:16
Дмитрий
Добрый день!
Есть проблемка. В хранимой процедуре есть необходимость использовать UNION. Пишу:
Код: Выделить всё
FOR SELECT CUSTOMER_ID, DOC_ID
FROM TABLE1
WHERE ЛЯ-ЛЯ-ЛЯ
UNION
SELECT CUSTOMER_ID, DOC_ID
FROM TABLE2
WHERE ЛЯ-ЛЯ-ЛЯ
INTO :CUSTOMER_ID, :DOC_ID
DO
SUSPEND;
При компиляции получаю сообщение: Datatype unknown.
Как побороть? Или нельзя UNION использовать?
Re: UNION в ХП. Работать не хочет!
Добавлено: 22 фев 2005, 17:40
Merlin
Дмитрий писал(а):Добрый день!
Есть проблемка. В хранимой процедуре есть необходимость использовать UNION. Пишу:
Код: Выделить всё
FOR SELECT CUSTOMER_ID, DOC_ID
FROM TABLE1
WHERE ЛЯ-ЛЯ-ЛЯ
UNION
SELECT CUSTOMER_ID, DOC_ID
FROM TABLE2
WHERE ЛЯ-ЛЯ-ЛЯ
INTO :CUSTOMER_ID, :DOC_ID
DO
SUSPEND;
При компиляции получаю сообщение: Datatype unknown.
Как побороть? Или нельзя UNION использовать?
Вызывает некоторые сомнения ЛЯ-ЛЯ-ЛЯ

Точно в select'ах только поля, констант нету? Если вырезать этот union и выполнить отдельно, вне процедуры - работает?
Добавлено: 24 фев 2005, 09:07
Дмитрий
Вызывает некоторые сомнения ЛЯ-ЛЯ-ЛЯ
Ну, если точнее, там есть еще несколько джоинов.
вырезать этот union и выполнить отдельно
А отдельно, вне процедуры, буду пробовать.
Re: UNION в ХП. Работать не хочет!
Добавлено: 24 фев 2005, 10:14
Slava Ekimov
При выборках cast-ом явно приводи к одному типу
select cast(customer_id as int) as customer_id
Добавлено: 24 фев 2005, 10:16
kdv
есть вообще сомнения в использовании union для table1 и table2. ну если только не надо убрать одинаковые записи. Так что, вместо union all можно просто написать 2 for select.
Добавлено: 24 фев 2005, 10:56
Дмитрий
есть вообще сомнения в использовании union для table1 и table2
А у меня нет. Просто я кусок процедуры упрощенный написал. В table1 и table2 совершенно разные данные и критерии выборки разные. Одинаковых данных быть не может. Просто потом идет довольно сложная обработка этой выборки и повторять ее дважды не очень хочется, что бы не загромождать текст процедуры.
А на самом деле я проблему решил

вернее ошибку нашел.
Полей выбирается много, и одно из них в table1 имеет тип integer, а в table2 - smallint. Вот и вся проблема.