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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2006
Avatar de Juanito-Kun
Juanito-Kun Juanito-Kun is offline
Miembro
 
Registrado: abr 2005
Ubicación: Merida, Yucatan
Posts: 65
Poder: 20
Juanito-Kun Va por buen camino
Question SP en otro SP con cursores

Que tal saludos, estoy trabajando con Delphi 7 y Firebird 1.5.

Tengo 2 Stored procedure, el primero me devulve los dias de x tabla, ese tiene que llamar a el procedure 2 que hace ciertas operaciones con los dias que devuelve el procedure 1.

primer procedure que da los dias:

Código SQL [-]
CREATE PROCEDURE HORARIO_DIA_PLAZA (
    CVEDEPPZA VARCHAR (15) CHARACTER SET ISO8859_1)

AS
DECLARE VARIABLE VSQL VARCHAR(100);
DECLARE VARIABLE RDIAHORPZA INTEGER;
DECLARE VARIABLE RCVECATPER VARCHAR (15);
BEGIN
  /* Procedure body */
 for select distinct H.DIAHORPZA, PZ.CVECATPER
   from TBLHORPZA H, DETDEPPZA PZ
   where  H.CVEDEPPZA  = :CVEDEPPZA and
          H.CVEDEPPZA  = PZ.CVEDEPPZA and
          PZ.STADEPPZA = 1
        
   into
   :RDIAHORPZA,:RCVECATPER
 do
 begin
 
  execute statement  'execute procedure horario_no_checada('||'''CESADM014'||''''||','||2||')';
/*Aqui es donde no estoy seguro si se esta usando bien el execute statement*/
/*Use constantes (CESADM014,2) pero deben de ir las variables :RCVECATPER, :RDIAHORPZA respectivamente*/
  
 end
  SUSPEND;
END


Este es el segundo stored procedure:

Código SQL [-]
CREATE PROCEDURE HORARIO_NO_CHECADA (
    CVECATPER VARCHAR (15) CHARACTER SET ISO8859_1,
    DIA INTEGER)
AS
DECLARE VARIABLE VNChecada integer;
DECLARE VARIABLE VDia   integer;
DECLARE VARIABLE RDIAHORPZA INTEGER;
DECLARE VARIABLE RHORHORPZA TIME;
DECLARE VARIABLE RTURHORPZA INTEGER;
DECLARE VARIABLE RNUMHORPZA INTEGER;
DECLARE VARIABLE RIDEHORPZA INTEGER;

BEGIN
VNChecada=1;
  /* Procedure body */
 for  select  H.DIAHORPZA, H.HORHORPZA,
              H.TURHORPZA, H.NUMHORPZA, H.IDEHORPZA
   from TBLHORPZA H, DETDEPPZA PZ
   where PZ.CVECATPER = :CVECATPER  and
         H.CVEDEPPZA = PZ.CVEDEPPZA and
         PZ.STADEPPZA = 1           and
         H.DIAHORPZA = IA
   Order by H.DIAHORPZA, HORHORPZA, TPOHORPZA DESC,H.CVEDEPPZA
   into
    RDIAHORPZA,RHORHORPZA,RTURHORPZA,RNUMHORPZA,RIDEHORPZA
  do
   begin

    Update tblhorpza set
    NUMHORPZA=:VNChecada
    where IDEHORPZA=:RIDEHORPZA;
    VNChecada=VNChecada + 1 ;

   end
    suspend;
END


--------

El segundo procedure de acuerdo a los dias que me arroja el primero hace unas operaciones por medio del cursor.

Los dos dicen estar bien en sintaxis, me marca el siguiente error al correr el primero:

Código:
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements message length error  (encountered 0, expected 40)
En el primer procedimiento estoy usando el execute statement
.

Cambie los Stored procedure, lo que hice fue poner los valores de retorno como simples variables. pero sigo sin resolver el problema, me sale el mismo error..

No entiendo muy bien a que se refiere el mensaje .. saludos!

Gracias, espero que me puedan ayudar.

Última edición por Juanito-Kun fecha: 04-05-2006 a las 16:52:06.
Responder Con Cita
  #2  
Antiguo 04-05-2006
Avatar de Juanito-Kun
Juanito-Kun Juanito-Kun is offline
Miembro
 
Registrado: abr 2005
Ubicación: Merida, Yucatan
Posts: 65
Poder: 20
Juanito-Kun Va por buen camino
Wink SP dentro de Otro SP con cursores , Listo!

El primer Procedure queda :

Código SQL [-]
CREATE PROCEDURE HORARIO_DIA_PLAZA (
    CVEDEPPZA VARCHAR (15) CHARACTER SET ISO8859_1)
AS
DECLARE VARIABLE VSQL VARCHAR(100);
DECLARE VARIABLE VDIAHORPZA INTEGER;
DECLARE VARIABLE VCVECATPER VARCHAR (15);
BEGIN
  /* Procedure body */
 for select distinct H.DIAHORPZA, PZ.CVECATPER
   from TBLHORPZA H, DETDEPPZA PZ
   where  H.CVEDEPPZA  = :CVEDEPPZA and
          H.CVEDEPPZA  = PZ.CVEDEPPZA and
          PZ.STADEPPZA = 1
   into
   :VDIAHORPZA,:VCVECATPER
 do
  execute procedure horario_no_checada(:VCVECATPER, :VDIAHORPZA);
  SUSPEND;
END

El segundo:

Código SQL [-]
CREATE PROCEDURE HORARIO_NO_CHECADA (
    CVECATPER VARCHAR (15) CHARACTER SET ISO8859_1,
    DIA INTEGER)
AS

DECLARE VARIABLE VNChecada integer;
DECLARE VARIABLE VDia   integer;
DECLARE VARIABLE VDIAHORPZA Integer;
DECLARE VARIABLE VHORHORPZA TIME;
DECLARE VARIABLE VTURHORPZA INTEGER;
DECLARE VARIABLE VNUMHORPZA INTEGER;
DECLARE VARIABLE VIDEHORPZA INTEGER;

BEGIN
VNChecada=1;

  /* Procedure body */
 for  select  H.DIAHORPZA, H.HORHORPZA,
              H.TURHORPZA, H.NUMHORPZA, H.IDEHORPZA
   from TBLHORPZA H, DETDEPPZA PZ
   where PZ.CVECATPER = :CVECATPER  and
         H.CVEDEPPZA = PZ.CVEDEPPZA and
         PZ.STADEPPZA = 1           and
         H.DIAHORPZA = IA
   Order by H.DIAHORPZA, HORHORPZA, TPOHORPZA DESC,H.CVEDEPPZA
   into
    VDIAHORPZA,VHORHORPZA,VTURHORPZA,VNUMHORPZA,VIDEHORPZA
  do
   begin

    Update tblhorpza set
    NUMHORPZA=:VNChecada
    where IDEHORPZA=:VIDEHORPZA;
    VNChecada=VNChecada + 1 ;

   end
    suspend;
  /*Aqui termina el procedimiento de calcular el numero de checada*/
END


Los valores que retornan los puse como varibles, les cambie el nombre por comodidad .

Saludos!! espero que les sirva...
Responder Con Cita
Respuesta



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
Cursores animados Luis Castillo Varios 2 01-11-2005 00:17:58
Dos cursores a la vez lucasarts_18 MS SQL Server 6 05-10-2005 16:33:46
Cursores... dunia_lv SQL 1 05-04-2005 17:52:53
cursores en interbase epalacios Conexión con bases de datos 1 05-05-2004 11:06:41
cursores en interbase epalacios Conexión con bases de datos 1 04-05-2004 17:24:05


La franja horaria es GMT +2. Ahora son las 22:19: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