ayuda porfi!!

imaz
09 de Marzo del 2004
a las buenas de dios

FUNCTION VALOR_SEQ
(p_seq_name IN varchar2)
RETURN number IS

v_cod number;

BEGIN
--siguiente valor actual
select p_seq_name.nextval into v_cod from dual;
RETURN v_cod;
EXCEPTION
WHEN others THEN
v_cod:=-1;
END;

quiero que dado cualquier secuencia me devuelva el valor nextval, pero me casca.
como lo puedo hacer?

cpinol
09 de Marzo del 2004
CREATE OR REPLACE FUNCTION VALOR_SEQ
(seq_name IN varchar2)
RETURN number IS

v_cod number;

BEGIN
--siguiente valor actual
select p_seq_name.nextval into v_cod from dual;
RETURN v_cod;
EXCEPTION
WHEN others THEN
v_cod:=-1;
END;
y creo la secuencia:
create sequence P_SEQ_NAME
minvalue 1
maxvalue 100000
start with 21
increment by 1
cache 20
order;
y me funciona


Adrian
09 de Marzo del 2004
CREATE OR REPLACE FUNCTION MI_FUNCION(SEQ VARCHAR2) RETURN NUMBER
IS
V NUMBER;
BEGIN
EXECUTE IMMEDIATE 'SELECT ' || SEQ || '.NEXTVAL FROM DUAL' INTO V;
RETURN V;
END;
/

Saludos


imaz
09 de Marzo del 2004
gracias adrian, me va ser util.

habia pensado en crear un cursor dinamico, pero lo tuyo va ser mejor.

agur.