Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2012
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
Error -501 Attemp to reclose...

Hola a todos, estoy usando: Delphi 2007 + firebird 1.5 + zeos v7.

Tengo unos procedimientos almacenados que cuando los ejecuto, tanto en modo diseño como ejecución dan el error... "SQL Error: Dynamic SQL Error SQL Error code = -501 Attempt to reclose a closed cursor. Error Code: -501. The cursor identified in a FETCH o CLOSE statement in not open"

Alguien sabe que puede estar pasando. ???

Antes usaba zeos 6.6. y no tenia este problema, pero por algunos problemas en otros software actualice a zeos 7.0, no creo que este sea el problema.

¿alguien que pueda ayudarme?


Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 24-10-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Lo que te está diciendo el error, es que estas cerrando un CURSOR que ya está cerrado, revisa el procedimiento, seguramente en la versión 6.6 no te avisara del error pero en la versión 7 eso ha cambiado o estás utilizando el FETCH estando cerrado el CURSOR.

Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 24-10-2012 a las 08:48:49.
Responder Con Cita
  #3  
Antiguo 24-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tampoco estaría nada mal que pusieras el código que lo veamos
Responder Con Cita
  #4  
Antiguo 24-10-2012
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
No entiendo como se manejan los cursores en un procedimiento almacenado.

Este es el procedimiento que da el error.

Código SQL [-]
CREATE PROCEDURE CALC_CUENTACORRIENTE (
    PCOD_CLIENTE INTEGER)
AS
DECLARE VARIABLE HABER FLOAT;
DECLARE VARIABLE DEBE FLOAT;
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE TMP_SALDO FLOAT = 0;
declare variable statuscta varchar(1);
declare variable limitesaldo float;
begin
  TMP_SALDO = 0;
  for select ID, DEBE, HABER from CLIENTES_CUENTA
      where COD_CLIENTE =:PCOD_CLIENTE
            and (cerrado = '0')
      order by fecha,id
      into :ID, : DEBE, :HABER
  do begin
     if (NOT : DEBE IS NULL) then TMP_SALDO = :TMP_SALDO + : DEBE;
     if (NOT :HABER IS NULL) then TMP_SALDO = :TMP_SALDO - :HABER;
     UPDATE clientes_cuenta SET SALDO=:TMP_SALDO WHERE ID = :ID;
  end
  update clientes set saldo_cta = :tmp_saldo
  where cod_cliente = : pcod_cliente;
  
  /* Trigger body */
  select LIMITE_CTA, OPERA_CTACTE from clientes
  where cod_cliente = :PCOD_CLIENTE
  into :limitesaldo, :statuscta;
  if (:tmp_saldo >= :limitesaldo) then
  begin
       /* se deshabilita la cuenta */
       update clientes set OPERA_CTACTE = '0'
       where cod_cliente = :PCOD_CLIENTE;
  end
  else begin
     if (:statuscta = '0') then
     begin
          /*se habilita la cuenta*/
          update clientes set OPERA_CTACTE = '1'
          where cod_cliente = :PCOD_CLIENTE;
     end
  end
end

El error se produce incluso en el entorno de desarrollo. Este código esta de hace tiempo y nunca tenia problemas, incluso funciona bien, es decir, hace lo que tiene que hacer.
Ademas hay otros SP que estan teniendo el mismo problema y otros que funcionan bien...
¿alguna idea ? Gracias.

Última edición por Casimiro Notevi fecha: 24-10-2012 a las 15:56:56.
Responder Con Cita
  #5  
Antiguo 24-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ve comprobando por partes, pon en comentario, por ejemplo, desde /* Trigger body */ hasta el final y prueba si da error, luego vas "descomentando" por trozos hasta encontrar el lugar exacto del problema.
Responder Con Cita
  #6  
Antiguo 25-10-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Quizás el problema esté en la separación ": DEBE", ": pcod_cliente" en vez de "EBE", "cod_cliente" puede ser.

Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #7  
Antiguo 25-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No, eso lo hemos modificado para que no salgan muñequitos en pantalla
Responder Con Cita
  #8  
Antiguo 25-10-2012
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
eso es cierto, lo modificamos por los muñequitos... estoy probando el SP en partes como recomendaron. Los mantengo informados.
Responder Con Cita
  #9  
Antiguo 02-04-2013
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
Perdon por reabrir este hilo pero resulta que sigo con el mismo problema. En su momento lo solucione cambiando el componente TZStoreProc (Zeos) por TSQLStoreProc, este último funciona sin problemas con el storeproc escrito en la base de datos.

Para hacer esto tengo que tener dos conecciones a la BD con todo lo que trae eso... alguien sabe de este bug en zeos y si ha sido solucionado ???

Gracias.
Responder Con Cita
  #10  
Antiguo 03-11-2018
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Lightbulb

Yo obtuve el mismo mensaje -"Attempt to reclose a closed cursor"- al ejecutar un SP usando la sentencia SELECT. El inconveniente en este caso particular se presentó al pasar a un parámetro de tipo SMALLINT un valor entero mayor que el valor máximo del tipo SMALLINT (32767).

Firebird 3.0.4
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
error en la prueba de conexion al inicializar al proveedor. error de autenticacion ygeraldino Conexión con bases de datos 12 20-06-2011 23:51:18
Error al generar instalador con installshield (error 6173) jangel_ramirezm Varios 4 09-12-2008 00:07:54
dbexpress Error: unknown error Code '101' raorre Conexión con bases de datos 3 13-10-2008 07:53:49
error:[Fatal Error] Unit1.pas(7): Unit ZDbcConnection was compiled with a different.. karaoke Conexión con bases de datos 2 19-12-2007 10:22:36
¿Por qué me da este error?Error creating cursor manejador nuri SQL 2 01-08-2005 17:30:28


La franja horaria es GMT +2. Ahora son las 14:49:49.


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
Copyright 1996-2007 Club Delphi