SQL> create or replace function fill_ids_array(n in number default 1)
2 return number
3 is
4 l_tab sys.odcinumberlist;
5 begin
6 select empno
7 bulk collect into l_tab
8 from emp
9 fetch first n rows only;
10
11 return l_tab.count;
12 end;
13 /
Function created.
测试:
SQL> select fill_ids_array(6) cnt from dual;
CNT
----------
6
SQL> select fill_ids_array(3) cnt from dual;
CNT
----------
3
SQL> select fill_ids_array cnt from dual;
CNT
----------
1
SQL>
FUNCTION fill_ids_array(
n in number default 1
) RETURN number_list
IS
t_ids_array number_list;
BEGIN
IF n IS NULL THEN
-- All rows
SELECT id
BULK COLLECT INTO t_ids_array
FROM some_table;
ELSE
-- Specified number of rows
SELECT id
BULK COLLECT INTO t_ids_array
FROM some_table
FETCH FIRST n ROWS ONLY;
END IF;
RETURN t_ids_array;
END;
2条答案
按热度按时间rqqzpn5f1#
就像那样。
测试:
hvvq6cgz2#
当需要所有行时,可以使用
IF
语句来处理这种情况:如果你想明确地表示你想要所有的行,那么你可以用途: