- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
procedure dynamic_open(p_sql VARCHAR2, p_params t_string_table, p_cur OUT SYS_REFCURSOR) is
begin
case p_params.count
when 0 then open p_cur for p_sql;
when 1 then open p_cur for p_sql using p_params(1);
when 2 then open p_cur for p_sql using p_params(1),
p_params(2);
when 3 then open p_cur for p_sql using p_params(1),
p_params(2),
p_params(3);
when 4 then open p_cur for p_sql using p_params(1),
p_params(2),
p_params(3),
p_params(4);
/* ... */
when 100 then open p_cur for p_sql using p_params(1),
p_params(2),
p_params(3),
p_params(4),
/* ... */
p_params(100);
end case;
end dynamic_open;
Динамический SQL - такой динамический. Уложились всего-то в 5050 строк.
Это позволяет при любых входящих условиях выполнять execute immediate ... using ... или open for ... using ... с неизменным числом параметров.