llamada a procedimientos dinamicos en PL/SQL

dernesto
24 de Noviembre del 2005
Bueno hace casi tres dias que es estoy tratando de hacer un procedimiento que de forma dinamica con solo recibir el nombre de cualquiera de los procedimientos que tengo en mi servidor, y los parametros me ejecute el procedimiento deseado y me devualva el resultado.

He logrado algo como lo que sigue

procedure dselection(pkg in varchar2,pro in varchar2,lstprm in varchar2, io_AllRec OUT ref_cursor)
IS
cad varchar2(100) := '';
BEGIN
cad := 'call PKG_'|| pkg ||'.'|| pro || '(:lstp,:cursor)';
execute immediate cad using in lstprm, out io_AllRec;
end dselection;

Esto funciona asi que si le sirve a alguien, ya tienen, a mi no me sirve ya que la cosa se complica cuando en ves de un solo parametro como es este caso trato de pasarle varios.

Espero que me ayuden ya que aunque en estos dias he buscado bastante no he encontrado nada.
No me funciona ni el sql dinamico nativo, ni las funciones que tiene el dbms_sql.

Gracias a todos........

dernesto
24 de Noviembre del 2005
Bueno quizas lo que sucedio fue que no puse correctamente el enunciado de lo que queria hacer.
Yo mismo lo he resuelto, buneo despues de unas cuantas horas nada salio.

Solo teniamos que concatenar bien y aclopar solamente el cursor, aclaro algo lo he resuelto con sql dinamico nativo.

El procedimiento quedo como sigue:
PROCEDURE SPdinamicProcedure(pkg in varchar2,pro in varchar2,lstprm in varchar2, io_AllRec OUT ref_cursor)
IS
cad varchar2(500) := \'\';
BEGIN
cad := \'call policia.PKG_\'|| pkg ||\'.\'|| pro || \'(\'|| lstprm ||\',:AllRec)\';
execute immediate cad using out io_AllRec;

end SPdinamicProcedure;

Me gustaria que si alguien tiene algo que aportar lo hiciera ya que aprenderiamos mas.
OK igual hemos aprendido.
Gracias a todos..........

dernesto
24 de Noviembre del 2005
Bueno quizas lo que sucedio fue que no puse correctamente el enunciado de lo que queria hacer.
Yo mismo lo he resuelto, buneo despues de unas cuantas horas nada salio.

Solo teniamos que concatenar bien y aclopar solamente el cursor, aclaro algo lo he resuelto con sql dinamico nativo.

El procedimiento quedo como sigue:
PROCEDURE SPdinamicProcedure(pkg in varchar2,pro in varchar2,lstprm in varchar2, io_AllRec OUT ref_cursor)
IS
cad varchar2(500) := \'\';
BEGIN
cad := \'call policia.PKG_\'|| pkg ||\'.\'|| pro || \'(\'|| lstprm ||\',:AllRec)\';
execute immediate cad using out io_AllRec;

end SPdinamicProcedure;

Me gustaria que si alguien tiene algo que aportar lo hiciera ya que aprenderiamos mas.
OK igual hemos aprendido.
Gracias a todos..........