select по массиву

Wireless
Дата: 06.03.2007 07:35:10
Есть пакет
Oracle
SUBTYPE TTEST_ID IS TEST.TEST_ID%TYPE;
TYPE TTEST_LIST IS ARRAY(500) OF TRECEIPT_ID;

FUNCTION testit (p_list TTEST_LIST) RETURN NUMBER;
...

В функции testit нужно сделать запрос по записям
из списка test_id IN p_list.

Есть ли синтаксис, чтобы не формировать динамически запрос?
Единственное решение, которое вижу - в цикле сформировать
строку со всеми id из переданного в функцию списка, потом
EXECUTE IMMEDIATE.
Wireless
Дата: 06.03.2007 07:37:30
Не работает
            SELECT SUM(r.PAY_VAL) as amount
            FROM test r
            WHERE r.TEST_ID IN p_list
но как было бы красиво :)
Wireless
Дата: 06.03.2007 10:12:22
в общем решили
1. FORALL INSERT во временную таблицу
2. SELECT ...
WHERE IN (select из временной таблицы)
Elic
Дата: 06.03.2007 10:23:58
Wireless
в общем решили
1. FORALL INSERT во временную таблицу
2. SELECT ... WHERE IN (select из временной таблицы)
Бррр... STFF table()
Форумчанин
Дата: 06.03.2007 10:45:44
CREATE TYPE TTEST_LIST IS ARRAY(500) OF NUMBER; 

CREATE OR REPLACE FUNCTION testit (p_list TTEST_LIST) RETURN NUMBER IS
  l_ret NUMBER;
BEGIN
  SELECT COUNT(DISTINCT COLUMN_VALUE) INTO l_ret FROM TABLE(p_list);
  
  RETURN l_ret;
END;

DECLARE
  l_table TTEST_LIST := TTEST_LIST(1,4,3,4);
BEGIN
  dbms_output.put_line(testit(l_table));
END;
Wireless
Дата: 06.03.2007 13:28:19
век живи - век учись :)

FUNCTION testit (p_list TTEST_LIST) 
RETURN NUMBER   IS
  l_amount NUMBER;
BEGIN
            SELECT SUM(r.PAY_VAL) INTO l_amount 
            FROM test r
            WHERE r.test_ID IN (SELECT column_value FROM TABLE(p_list));
//...
END;