|
|
|
новичок
      
участник
Last Login: 04.04.2002 19:30
Сообщ.: 1,
Visits: 12
|
|
Привет всем! Я создаю тип TYPE tt IS TABLE OF NUMBER(10); затем хочу внего записать что-то и ипользовать в операторе where в следуюющем запросе: как это сделать или кто-использовал орокловские массивы(TABLE,VARRAY) в where - м. его нельзя использовать в where(но тогда теряется смысл массивов) Даю примерный код как я это делаю
DECLARE TYPE tt IS TABLE OF NUMBER(10); iop_tb_nea_id tt; ip_nI_id Number(10); v_max_BS NUMBER(10);--ExAcc.NEA_POSBUYCNT%TYPE;
BEGIN ip_nI_id := 21; SELECT ea.nea_id BULK COLLECT INTO iop_tb_nea_id FROM ExAcc ea WHERE nI_Id=ip_nI_id;
SELECT NEA_POSBUYCNT INTO v_max_BS FROM ExAcc WHERE NI_ID = ip_NI_ID AND NEA_POSBUYCNT-NEA_POSSELCNT <> 0 AND nEA_id in (select t.* from TABLE(iop_tb_nea_id) t)/*без последней строчки работает отлично даже ничего не говорит*/; END; /
PS массив iop_tb_nea_id не пустой у него iop_tb_nea_id.count() = 3
|
|
|
|
|
Junior Member
      
участник
Last Login: 23.10.2002 13:53
Сообщ.: 22,
Visits: 243
|
|
| Лучше использовать временную таблицу (global temporary), а потом ее убить, или не убивать, в зависимоти от того, как часто этот код используется. Гемора меньше + удобней отлаживать + надежность повыше. С пакетными/процедурными переменными глюки случаются частенько.
|
|
|
|