![]() |
Maximo de parametros para procedimiento
Hola compañeros... :)
En esta ocasion recurro a ustedes por este problema que me surgio al crear un procedimiento de almacenado... Uso Firebrid 1.5
Por lo que veo... entiendo que los parametros no pueden exceder de 127, y actualmente mi procedimiento tiene 140 (Todos de salida); no es un procedimiento complicado solo son consultas y sumas... Espero que alguno de ustedes me pueda dar una idea de como soluciono este problema o unas clasesitas de SQL avanzado :D... |
Solo posteo mi propio hilo para mantenerlo vivito.. :D
|
Pues la verdad, estoy cansado de buscar...:mad:
Solo he encontrado foros en ruso :rolleyes: donde se trataba el tema; pero creo que el error hace parte de la version de Firebird... no estoy seguro... Aun espero que alguno de ustedes me pueda comentar algo al respecto, de lo contrario tendria que intentar dividir el procedimiento en dos :eek::cool:... |
Hola felipe88,
No estoy pueto en SP, pero me extraña ver una cifra tan grande... ¿Que estás haciendo para tener que necesitar 140 valores de retorno? Me extraña un número tan elevado. A mi modo de ver, creo que deberías buscar alguna alternativa más simple. Saludos, |
Cita:
Un reporte que aunque no lo creas, esa solo es la mitad de campos que lleva... Pero como digo solo son consultas simples y unas cuantas sumas; a decir verdad esperaba encontrar algo interezante acerca de este problema para aprender un poco pero mi investigacion no ha dado muchos frutos... Por ahora estudio la posibilidad de dividirlo. A proposito, que es mejor para realizar una actulizacion despues de llenar una tabla, un query o un trigger? |
Hola
Me pregunto si ya hiciste la prueba usando un Query, si ahí funciona no te compliques tanto y ovidate por un momento del SP, al menos pienso yo así, depende si tienes el tiempo justo par salir con tu desarrollo. Salud OS |
Cita:
|
felipe88, por más personal que sea el trabajo debes considerar el esfuerzo y tiempo que te lleve hacer.
Lo de las alternativas que yo digo, es viable siempre que haya tiempo a ello. Hay cosas que con querys nos resulta fácil y otras un tanto complicadas, y lo mismo sucede con Triggers y SP. Con respecto a tu pregunta, sobre que es mejor.. en principio a mi modo de ver el Trigger. Aunque... puede que tenga sus excepciones... Como lo pinta una canción: Depende, ¿de que depende? .. Según como se mire... todo depende... ;) Saludos, |
Cita:
Pues que bueno que sea asunto personal, porque en otras circunstancias no me lo pensaria demasiado, al menos tienes la opcion de tener flojera :), de cualquier forma no dejes de tener la opcion de los queries :) Salud OS |
Cita:
|
Cita:
Cita:
|
Cita:
Cita:
Cita:
|
Bueno, volviendo al tema inicial de este hilo les comento que encontre la causa de este error; efectivamente es la version 1.5 de Firebird, a partir de la version 2.0 el limite maximo son 255 parametros. Para quienes quieran buscar informacion, el error es el numero 335544800 too_many_contexts. link
Igual no descarto los consejos y la busqueda de otras alternativas. Gracias Saludos |
Como ejecuto esto...?
Hola a todos, hoy me dio por reciclar mis propios hilos :D...
Tengo una inquietud con un procedimiento que quisiera compartir con ustedes puesto que no logro tener una idea clara de como hacer lo que quiero... les explico: En una tabla tengo un historial de los ultimos doce meses de un numero de usuarios, lo que quiero hacer es consultar la cantidad mediante el procedimiento sin tener que hacer tantas consultas y sin utilizar tantos parametros de salida (Por aquello del error :rolleyes:) El detalle es que si lo hago consulta por consulta no sabria como hacer el select, debido a que no use un id y los meses se actualizan... Pense en un for select, pero luego :confused: como lo hago...:o Espero me entiendan y me puedan ayudar... |
bueno, aprovechando la super promocion que tanto dices a ver si esto te ayuda un poco, yo me encontre no hace mucho con ese problema y leyendo y leyendo pude resumir una informacion muy importante que me permitio salir del atoro en el que estaba.
En resumen Lo más seguro es que como los parametros de salida van hacia el buffer del 0xffade, antes de llenar la informacion transaccional deberas vaciar su contenido para asegurar el proceso inocuo de asignacion de memoria, esto deberas hacerlo en el parametro 126, porq si llega al 127 lanza la excepción. Espero te sea de ayuda |
Definitivamente podrias plantearte la idea de cambiar el diseño de dicho procedimiento, que no crezca "horizontalmente", si no mas bien de forma "vertical".
Osea, que no crezca tanto en parametros, si no que captures los datos de otra forma, es que realmente no se como explicarlo, mejor dicho, lo que pretendo es que cambies la forma de pensarlo ;). No se si me hago entender. |
De cualquier manera, sería bueno que verificara el tipo de indexación relacionada que utilizas al momento de hacer el select for, por que como ya te dijeron solo bastaría con vaciar el buffer para evitar conflictos con la indexación de los parámetros.
|
Cita:
Bueno añado que este procedimiento lo uso para sacar un reporte (Crystal Reports), el reporteador es quien se encarga de ejecutar el procedimiento como tal... lo que me dices como podria hacerlo entonces..:confused: perdona mi ignorancia :o |
Pero se han olvidado de un pequeño detalle, bajo esas características deben de tener en cuenta el direccionamiento de memoria sobre todo si usan mas de un procesador.
Salud OS |
Cita:
Un Saludo. |
Cita:
no te preocupes no es ignorancia, es inocencia, fue una pequeña broma de sabado por la mañana, no existe un procedimiento tal :D Volviendo a lo tuyo, estoy de acuerdo con Jhonny, pero n opodriamos ayurdate al menos que nos digas que tienes y que quieres, porq obviamente puede que estes enfocando mal el problema. |
Cita:
Cita:
Cita:
|
Cita:
Toma del pelo = Sabado por la mañana + Foristas con falta de sueño :D |
jejejeje
:D si hubera sido por msn, hubiéramos durado por todo el fin de semana dándole vueltas indexacionales al asunto. :D |
Cita:
Salud OS |
Cita:
|
Cita:
Salud OS |
Cita:
|
Bueno antes de que aparescan los que faltan :rolleyes::D...
Aca les planteo la idea completa, la tabla de la base de datos y el resultado final del reporte
Y este es el resultado final que espero lograr... http://img95.imageshack.us/img95/1390/repkc4.png |
Cita:
|
Cita:
Cita:
|
sera eso lo que necesitas?? |
Cita:
En estos momentos estoy pensando la solucion mas por parte del reporte que por el procedimiento. Luego les cuento como me va al respecto... |
Señores, logre concentrarme; cai en cuenta de mi error logico :rolleyes:... y obtuve esto:
|
"Vuelve la burra al trigo..."
Hola a todos, Que tal yo soy nuevo por estos lados estoy comenzando a trabajar en delphi con bases de datos, practico con el "Hola mundo" en 15 idiomas; uso TTables y BDE...(:p) veo que aca hay "monstruos" para programar y son muy serios para responder, mi inquietud es la siguiente := cual es la sentencia SQL para eliminar el primer registro de una tabla que no usa llave primaria?... me pueden responder a los siguientes correos: [email protected] [email protected] [email protected] [email protected] :D:D:D:D |
No se si la vaina va en serio, pero de todas maneras prueba lo siguiente y nos cuentas si te funciona :):
P.D: Enviale de mi parte, un Feliz cumpleaños a los ratoncitos de tu casa :D. |
Cita:
PD: No te imaginas la fiesta :D ![]() ![]() Como habilito las etiquetas [img] ??? |
|
Cita:
Salud OS oops, creo que al que le afecta es a mi :D:D:D, ya me voy |
Cita:
|
| La franja horaria es GMT +2. Ahora son las 20:15:11. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi