Here is what I have so far:
FUNCTION get_ids_by_acct(acct_p NUMBER) RETURN SYS.ODCINUMBERLIST
IS
CURSOR cli_cur
IS
SELECT id
FROM test_clients
WHERE account = acct_p;
ids_n SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST();
cnt_n NUMBER := 0;
BEGIN
FOR cli IN cli_cur LOOP
ids_n.EXTEND;
ids_n(ids_n.COUNT) := cli.id;
cnt_n := cnt_n + 1;
END LOOP;
IF cnt_n = 0 THEN
ids_n.EXTEND;
ids_n(conts_n.COUNT) := -1;
END IF;
RETURN ids_n;
END;
I have the following function that works just fine when I call it like this:
SELECT *
FROM test_clients
WHERE id IN (SELECT * FROM TABLE(get_ids_by_acct(1)));
but I would like the same result by doing the following:
SELECT *
FROM test_clients
WHERE id IN (get_ids_by_acct(1));
is this possible?