Usar Cursor SQL Dinamico Retorne String
tema enviado por hetor en ORACLE
tema iniciado el 04/12/2007
Tengo la siguiente funcion, alguien podria ayudarme como ciclar dentro de un query dinamico ej:
EXEC :CURSOR := PRUEBAS1( '*', 'GARANTIAS.GARCEDO0', 'PAI_CVE = 1', '2' )
el query seria: SELECT * FROM garcedo0 WHERE pai_cve = 1
pero quiero retornar una cadena manipulada con los datos que me de este query.
CREATE OR REPLACE FUNCTION Pruebas1 ( idCampos VARCHAR2, idTablas VARCHAR2, idCondicion VARCHAR2, idOrdenar VARCHAR2 )
RETURN VARCHAR2
IS
rclCURSORSAL GARANTIAS.CursorGarantias.ref_cursor ;
vlCADENASQL VARCHAR2(4000) ;
varCadena VARCHAR2 (4000) ;
tmpvar VARCHAR2 (4000) ;
--fila %ROWTYPE ;
BEGIN
vlCADENASQL := ' SELECT ' || idCampos ||
' FROM ' || idTablas ;
IF idCondicion IS NOT NULL THEN
vlCADENASQL := vlCADENASQL ||
' WHERE ' || idCondicion ;
END IF ;
IF idOrdenar IS NOT NULL THEN
vlCADENASQL := vlCADENASQL ||
' ORDER BY ' || idOrdenar ;
END IF ;
BEGIN
OPEN rclCURSORSAL FOR vlCADENASQL ;
LOOP
FETCH rclCURSORSAL INTO varCadena ;
EXIT WHEN rclCURSORSAL%NOTFOUND ;
tmpvar := tmpvar || 'ID EDO = ' ||
varCadena.1 || ', ESTADO = ' ||
varCadena.1 || ', PAIS CVE = ' ||
varCadena.1 || ',';
END LOOP ;
CLOSE rclCURSORSAL ;
END ;
RETURN tmpvar ;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLCODE) ;
dbms_output.put_Line(SQLERRM) ;
END Pruebas1 ;
/
Por su atencion gracias