![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Ya habrán pasado unos 4 o 5 años que use MS SQL server y me fue muy útil retornar varios cursores, el XML debó decir que nunca lo use, y la conexión con bases de datos del mismo o de distinto servidor era algo que probé mucho porque me gustaba, aun así no lo hice porque tuviera la necesidad, me gustaba mucho hacer un
Sin necesitar que definir que campo1 era un entero y que campo2 era un varchar, aun así más de una ocación me hizo mucha falta el manejo que se da con el suspend de firebird que en MS SQL Server no se como se hace (las respuestas que recibí en el momento es que no tenía algo similar), para mis necesidades de procedimientos almacenados me parece más grabe que falte el supend que el poder retornar múltiples datasets, ya que con el mismo suspend puedo retornar datos mejor filtrados, no dudo que para otras necesidades sea mejor el tener múltiples cursores. Respecto a lo gratis o lo de pago, pues todo depende, el hecho de descargar y usar Firebird ya se le está apoyando, y esto le produce ganancias, ahora pasar por caja no está de más, además de poner en el acerca de un "power by Firebird x.x" no está nada mal
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
|
#2
|
||||
|
||||
|
Cita:
__________________
Conoce mi blog http://www.edgartec.com |
|
#3
|
||||
|
||||
|
Dentro de un procedimiento almacenado e incluso en un EXECUTE BLOCK puedes tener varios SELECT, pero el select que retorna los datos es el que tiene el SUSPEND, creo que lo mismo aplica en variables de salida, que a la final es lo mismo.
Saludos.
__________________
mas confundido que Garavito el día del Niño. |
|
#4
|
||||
|
||||
|
Cita:
Entonces entiendo que el suspend identifica de manera explicita que select quieres devolver... lo cual no debería ser necesario peus el mismo lenguaje PLSQL o TSQL establece la manera en que un sp retorna un recordset... supongo que debe tener algún uso adicional en firebird... o es solo ese? identificar que selecte se devolvera?
__________________
Conoce mi blog http://www.edgartec.com |
|
#5
|
||||
|
||||
|
Cita:
Y no por eso se va a retornar los datos de campo1 y campo2 como resultados de un cursor, en Firebird tengo que declarar que parametros van a salir en el cursor e ir por medio de un comando llamado "for select" recorriendo el dataset que necesito consultar, ahora yo con la información que me retorna Campo1, Campo2 en el "for select " no necesariamente es la que quiero mostrar, con ella por ejemplo necesito hacer varias operaciones antes de mostrarla y al final puedo entregar un recordSet construido con información muy diferente a la que viene en la consulta original y es ahí cuando tengo el resultado que igual en una o varias variables de resultado y doy la orden de suspend y me sale un recordset con campo3 y campo4 que eran los resultados obtenidos por campo1 y campo2, también puedo fabricar un recordset de algo que no es una tabla, ejemplo
Con el procedimiento almacenado anrterio envio como paramentro de entrada una seríe de números separados por comas, por decir "1,4,6,7,12,22", internamente hago una operación de cadenas y retorno como recortset los números en valor entero, y con ellos puedo hacer inner joins on validaciones tipo exists que me funcionan más rápido que validaciones "where campo in ('1,4,6,7,12,22'). la verdad siento que no soy muy claro al tratar de explicarme, pero eso es una idea de lo que hace el suspend
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
|
#6
|
||||
|
||||
|
Cita:
Pero eso no es agregar código adicional? Mysql y MsSql por ejemplo tu haces un
y eso obtienes al ejecutr el SP con lo que no requieres de un suspend o fetch etc... En oracle y Db2 al contrario debes delcarar como un cursor el recordset que deseas dar como salida del SP pero al final con un mero Open CurName obtienes la salida del sp... Entonces.. déjame ver si entiendo bien, En Firebird debes hacer todo ese código para poder dar salida a un simple resultset en un SP? ![]()
__________________
Conoce mi blog http://www.edgartec.com |
|
#7
|
|||
|
|||
|
Cita:
No es lo mismo devolver un cursor, que el propio procedimiento sea un cursor. Select * From procedimiento( aram1, aram2,..., : paramN )Un procedimiento no se realiza para sustituir un simple select como en el caso que has puesto, su objetivo es realizar un procesamiento más o menos complejo, donde pueden intervenir consultas de varias tablas y operaciones más o menos complejas con los datos obtenidos de ellas, por ejemplo. Una de sus funciones es no es sustituir un simple select. Y el resultado de todo ello es un conjunto de registros que puedes tratar como una tabla. Quizá podrías mostrar como devolver un recordset con características similares en sqlserver, mysql u oracle para poder comparar realmente si es más o menos complejo, porque no creo que se pueda comparar el select que has puesto como ejemplo con el procedimiento almacenado que se ha escrito.
__________________
Un saludo, Jesus García |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Ayuda: "Record not found or changed by another user" | alquimista_gdl | Conexión con bases de datos | 14 | 21-03-2009 20:09:21 |
| Cursor "intermitente" al realizar consultas. | mlara | Firebird e Interbase | 1 | 24-05-2008 02:51:26 |
| Error Invalid blob handle in record buffer??? sin usar "Blobs to cache" | varuhs | Conexión con bases de datos | 4 | 22-01-2007 21:19:53 |
| ¿Como Guardar un "RECORD" en un campo BLOB? | sitrico | Conexión con bases de datos | 5 | 29-06-2004 17:32:01 |
| "no current record for fetch operation" con procedimiento almacenado usado en Select | Al González | Firebird e Interbase | 1 | 17-03-2004 21:13:17 |
|