2012-02-28 12 views

Respuesta

8

Se podía simular args var utilizando un tipo de tabla como parámetro.

create or replace type VARGS as table of varchar2(32767); 

A continuación, puede utilizar este tipo que el último parámetro de la función:

CREATE OR REPLACE Function FNC_COUNT_WITH_NAMES 
    (P_NAMES IN VARGS) 
    RETURN number 
IS 
RT_COUNT NUMBER; 
BEGIN 
    select count(*) INTO rt_count from employees where name IN 
    ( 
     select * from TABLE(p_names)) 
    ); 
    return rt_count; 
END; 

El código de cliente lo llamaría con:

exec FNC_COUNT_WITH_NAMES (vargs('Brian','Mike','John','David', 'Bob')); 

o

select FNC_COUNT_WITH_NAMES (vargs('Brian','Mike','John','David', 'Bob')) from dual; 
+3

Como está utilizando una cadena en sql, puede limitar la cadena a 4000 caracteres – turbanoff

Cuestiones relacionadas