oracle bloques anonimos que devuelvan registros
Buenos días,
tengo un problemilla que seguro que alguno me puede echar una mano. Situación: Exploto dos sistemas: - SQLServer - Oracle Utilizo ADO, concretamente ADOQuery en los dos casos. Con SQLServer ( concretamente su PL/SQL) me permite utilizar en las querys variables, cursores, ... Por lo tanto en la misma query declaro una tabla temporal, variables, cursores, hago lo que necesito, lo cargo en la tabla temporal y devuelvo una select de la tabla declarada. Perfecto. Con Oracle, sólo puedo hacer querys simples. No puedo utilizar variables, ni nada de nada, sólo lo que es una select más o menos compleja. He visto que con oracle se pueden ejecutar bloques anónimos. Se escriben , se ponen en una ADOQuery y se ejecutan. Pero yo lo que necesito es que el resultado sea un conjunto de registros, es decir, como una query. No puedo tocar la bbdd, por eso tengo que ejecutar fuera de ella todo lo que necesito. Alguien ha tenido el mismo problema ? En caso afirmativo, cómo lo ha resuelto? Os aviso que sólo quiero programar bloques de PL/SQL, no puedo meter lógica en delphi. Gracias y un saludo. PD: Os explico un pequeño ejemplo de lo que necesito: Con una select recupero uno cientos de registros. Por cada registro necesito calucular un dato en base a datos de otra tabla. Monto todo en una tabla temporal, y hago una select de la misma que obtiene los resultados que necesito. Este resultado se visualiza en un clientdataset, que presnto en pantalla, imprimo, vuelco a excel, .... Todo son lecturas, no hago ninguna actualización de datos. No puedo utilizar ninguna herramienta diferente, y utilizo ADO porque me permite conectarme via odbc a multiples orígenes de datos. |
Hola,
Lo que te propongo y te puede servir es usar cursores para levantar los datos de la primer tabla y hacer el cálculo que necesitas. Luego recorres ese cursor y lo vas cargando en la tabla temporal. Con los datos en esa tabla haces el select que necesitas listo. En este momento no tengo a mano el enlace de Oracle donde explica como usar cursores, pero ingresa en su sitio y busca que hay mucha información ahí. Saludos, El Rayo |
Gracias por responder, elrayo76
mi pregunta es más concreta: COn una query ADO puedo hacer todo esto? es decir, crear la tabla temporal, definir el cursor, recorrerlo, hacer algún cálculo y mostrar los registros? Lo pregunto porque en SQLServer sí se puede. La dificultad no es programar el proceso, sino que funcione. Esto lo necesito así porque en la aplicación que tengo "mezclo" datos de varios sistemas. La conexióna los mismos la hago vía odbcs varios definidos en el equipo desde donde se lanzan los procesos. Espero haberme explicado bien, ya que el contexto es el que me condiciona. Gracias de nuevo |
La franja horaria es GMT +2. Ahora son las 11:46:08. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi