![]() |
Cita:
Hay un dicho en México que lo refleja: "Gratis hasta unas puñaladas" Es verdad que pocos conocen del tema pero me pregunto... habría tenido tan poca asistencia si el tema fuera que se regalaba ese libro? |
Pienso que igual de concurrido, por ejemplo, yo no sabía que fuese de pago, sólo vi el anuncio y pensé "vaya, para cuando me haga falta ya sé a donde debo acudir por un libro sobre este tema", no llegué siquiera a profundizar para ver si era de pago o gratis o libre.
|
Cita:
// Saludos |
Cita:
Y si, encontré uno que tiene características "similares". La cara oculta de delphi 6 (regalo de Ian Marteens). Saludos |
36 respuestas en 2 años, las visitas aumentan bastante todos los días por culpa de los 'bots' de google, microsoft, etc.
Habrá que esperar un par de años para comparar :) |
Yo creo, sinceramente, que la diferencia de "popularidad" es debida única y exclusivamente a que el libro del amigo jachguate es muy técnico y avanzado, su temática no está al alcance de cualquiera, fíjate que la mayoría de usuarios que hay por aquí son bastante novatos, no tienes más que ver las preguntas que hacen y lo confundidos que están, que todavía no entienden ni lo más básico de la programación, no digamos ya sobre delphi.
Y como todo libro muy técnico, nivel avanzado y temática muy "vertical", tiene un público muy "filtrado", más bien gente bastante experta. No es un libro para "las masas" aficionadas de delphi. |
Estaba preparando una respuesta pero he decidido no hacerlo, porque argumentar el porqué un hilo de Marteens tiene más popularidad que un hilo de jachguate podría confundirse con restarle méritos a Juan Antonio y estoy muy lejos de eso.
Simplemente diré, que, más que defender un punto, da la impresión de que tienen cierto rencor por no haber visto aquí una recepción más abultada a la traducción del libro de Programación Paralela, un rencor, que ni siquiera sé si el propio Juan Antonio tiene. // Saludos |
:) No hombre, cual rencor, era sólo para ejemplificar la diferencia entre algo gratuito y algo de pago, no se vayan por otro lado, además ésto lo hago a titulo personal, nada tiene que ver Juan.
Saludos |
Cita:
Bueno, ajustandonos al debate. En lo personal jamás he tenido problema con usar software de paga o software open source, pues como muchas veces ha comentado ego, en tanto la solución se ajuste al problema y lo resuelva de manera óptima para mi no hay ningún problema... A diferencia de Casimiro para mi tanto linux, como windows o mac son muy buenos sistemas operativos, cumplen las tareas para las que fueron hechos y lo hacen bien. Decir que Windows 2008 es una porquería solo por que tiene un costo de licenciamiento y es´producto de microsoft es, a mi parecer errado. |
Vaya, hoy ha dimitido el máximo responsable de windows 8 y surface, no ha querido decir el motivo.
|
Cita:
Cita:
Por cierto, Casi: nuevo tema, nuevo hilo. ;) |
Cita:
|
Cita:
Y no. El hilo, o mejor dicho, la discusión que comenzaste, no es gratuito vs paga, sino, como ahora vuelves a decir, a si la gratuidad es o no un factor para elegir un producto. Entonces, poner de ejemplo un producto gratuito que es de sobra reconocido por su calidad, difícilmente pude tomarse como un argumento fuerte, asi como tomar un ejemplo de un producto de pago dirigido a una comunidad muy reducida también sólo con una imaginación muy amplia podría tomarse como argumento fuerte. // Saludos |
Cita:
Cita:
Saludos... |
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 |
Cita:
|
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. |
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? |
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 |
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? :eek: :eek: |
Cita:
No es lo mismo devolver un cursor, que el propio procedimiento sea un cursor. Select * From procedimiento( :param1, :param2,..., : 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. |
Cita:
Claro, un SP contiene dentro de si mucho código PLSQL, pero en el caso que se trata es meramente sobre como devolver un resulset. y si, aunque parezca muy simple, realmente en otros motores de bases de datos devolverlos es muy sencillo... no necesitas tanto trabajo para devolver un simple resultset. esto
Es exactamente lo mismo que cualquiera de estos:
Te devuelven todos un resulset |
En Sql Server es muy común ver procedimientos con una simple consulta ya que mejoran la velocidad de la consulta (tengo entendido), así pues es más rápido consultar información de una tabla por medio de un procedimiento almacenado que por una consulta directa en un componente similar al TQuery, en firebird por el contrario esto no cambia mucho y no se acostumbra a tener un procedimientos para insertar, otro para modificar y otro para consultar (no por lo menos para hacer estos procesos más rápidos), con firebird se construyen un Dataset muy fácilmente sin la necesidad de consultar una tabla como es el caso del ejemplo que envié en el procedimiento llamado SP_CADENA_A_RECORD, ese procedimiento no consulta sobre ninguna tabla, solo va procesando una cadena y va retornando un DataSet, lo consulto en un IBQuery haciendo un: Por ejemplo le puedo hacer un join con una tabla
|
Cita:
|
Cita:
Sobre el rendimiento de la consulta en un SP, esto aplica para la gran mayoria de motores de bases que cuentan con algo llamado "Execution plan" Acaso firebid no lo tiene? :eek: :eek: :eek: :eek: Cómo hace firebird para decidir la ruta más óptima para ejecutar una sentencia sql? Cómo hacen ustedes para verificar en Firebrid que no están ejecutando un "Table Scan" al ejecutar una consulta? ¿Firebird es capaz de permitirles decidir como y cuándo usar determinados índices en una tabla? Cita:
|
Amigo Poliburro, ¡¡¡qué manera de desvariar!!!, lo tuyo con firebird es grave :confused:
|
Cita:
¿y a que viene eso? :eek: estoy diciendo algo errado? honestamente no conozco suficiente firebird por eso pregunto. |
Precisamente, amigo, es que me extraña muchísimo tu actitud, cualquier cosa que se comente es suficiente para que digas algo como: "pero firebird no tiene talcosa :eek::eek::eek:", "pero firebird no tiene laotracosa :eek::eek::eek:", etc.
Yo no veo en ningún sitio que se haya dicho nada sobre los planes de ejecución, que por supuesto que tiene, y la interpretación que estás haciendo de los "stored procedure" también le buscas el lado malo: "tanto código hay que escribir para esto o para aquello :eek::eek::eek:". Cuando realmente es que no lo has entendido, o no se te ha explicado bien. |
Cita:
Cita:
Cita:
Cita:
Cita:
el resultado va ser un DataSet: Cita:
|
Bueno, este documento explica un poco sobre los procedimientos almacenados, es viejo y trata de Interbase, pero para este caso, acplica, este otro es algo mas actual y muestra mas cosas.
Saludos. |
Cita:
Cita:
Es una pregunta la que hago. Acaso preguntar algo es un desvario? :eek: :eek: :eek: Cita:
|
Hola poliburro, lo que no entiendo es la frase "tienes que hacer todo ese código para devolver un resulset", cuando lo único que se tiene que escribir en el cuerpo del procedimiento almacenado si deseas devolverlo como resultset es "suspend"
El resto de código es común y la lógica será la misma que en cualquier motor. Por otro lado, cuando te pedía el ejemplo no era en la llamada al procedimiento, sino en que escribieses el cuerpo del procedimiento en sqlserver, mysql, etc. para poder comprobar a lo que te referias con "todo ese código". Imagino que en los motores que comentas, tendrás que declarar la estructura del resultset, con campos y tipos, que es equivalente a los parámetros de retorno del procedimiento almacenado. Dentro del procedimiento, tendrás que introducir los datos en variables e insertarlos en el resultset, para poder posteriormente devolverlos y por último devolver una referencia al resultset. Desde tu aplicación cliente tendrás una llamada al procedimiento almacenado y posteriormente otra llamada para obtener los datos insertados en el resultset. En firebird, la sencillez es que la llamada al procedimiento ya es un resultset. Quizá con ejemplos sería mejor, por lo que sí nos pones algún ejemplo en otros motores, te podríamos mostrar su traducción a firebird y podríamos comparar cosas y no utilizar frases genéricas que creo no tienen sentido. |
Me parece que Casimiro ha detectado el tono con el que haces esas preguntas, Edgar, que no es precisamente el de alguien que espera recibir una respuesta didáctica y amable. Dices que no conoces lo suficientemente Firebird, pero recalcas las limitaciones que a tu juicio tiene. Respondes con efugios a algunas de las observaciones que de buena fe te hacen algunos de los compañeros en un intento por hacerte entrar en razón, para luego hacer comparaciones tendenciosas.
A los que hemos seguido este hilo ya nos quedó claro que guardas una especie de inquina hacia Firebird. Yo desconocía esto de ti (o mi memoria es mala), y de haberlo sabido antes no hubiera puesto en el mismo mensaje la pregunta inicial y la referencia a tu artículo. Ahora, en lo personal creo que las consultas de múltiples cursores es algo que Firebird debiera tener. Algo ha de rescatarse de este mal devenido debate. Saludos. |
Cita:
PD: Si no estoy mal, para la versión 3 de Firebird que no está lejos de salir, se va a soportar la salida de varios cursores o resulsets en un procedimiento almacenado y en execute block, creo que también en funciones. Saludos. |
Cita:
-------- Aunque no es exactamente pra rescatar el debate, pues más bien es una duda, me gustaría, Al, leer tu opinión de porqué es buena esta característica de los múltiples result sets. El ejemplo de poliburro no me aclara pues, a mi juicio, es algo que puede lograrse con enlaces entre tablas para recabar la información deseada. ¿Tendrías alguna situación en mente en la qué aplicar dicha técnica? // Saludos |
Cita:
2- No tengo ningún tipo de "inquina" contra firebird. No aprecio a ese motor de base de datos y tampoco soy muy dado a elegirlo para mis proyectos. Pero si fuera contratado para trabajar en él lo haría sin ningún problema. 3- He visto aquí a muchos vosciferar contra Windows, .Net, Vb, Sql Server, la iglesia, el anticristo, etc etc y no ha habido ningún problema en ello. ¿Por qué se considera tan "mala" mi "inquina" contra Firebird? |
Cita:
Incluso lo equiparas a paradox, access y dbase :confused: Cita:
En fin, no vale la pena, está bien que creas lo que quieras creer, amigo poliburro, pero no nos cuentes "cosas" que no son, porque las palabras se las lleva el viento, pero lo escrito... escrito está. |
Cita:
|
Cita:
Si bien Firebird carece de ciertas caracteristicas, como este caso, multiples resulsets, no quiere decir que estos no se puedan solventar de diferentes formas, varios procedimientos almacenados para este caso, soporte XML, hay varias UDF´s que hacen esto, lo mismo para búsqueda de texto completo, que de hecho no son soportadas directamente en la Api de MySQL, si no que son plugins adicionales que aunque ya vengan con la instalación, vienen a ser lo mismo que las UDF's de Firebird, y así varias características que pueden ser solventadas facilmente por programación, es mas sé de varias funciones que añaden soporte XML a Firebird, sin pasar por una UDF. Saludos. |
Cita:
Para mi es normal, todos en la vida tenemos cosas que no nos gustan, aun así Firebird hace cosas que SQL Server no hace, como hay cosas que Firebird no hace, ¿es normal no?. Cita:
|
La franja horaria es GMT +2. Ahora son las 09:10:18. |
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