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 24-05-2006
Ricardo León Ricardo León is offline
Miembro
 
Registrado: ago 2005
Posts: 41
Poder: 0
Ricardo León Va por buen camino
Exclamation Modificar un Store Procedure

Hola a todos.

Estoy intentando modificar un Store Procedure utilizando la sentencia
ALTER PROCEDURE .....
Al ejecutarlo me sale el siguiente error
Cita:
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 10, char 12
END
Statement: CREATE PROCEDURE "SP$REP_FACTURA"
Intente eliminar el Store Procedure y luego volverlo a crear pero me sigue saliendo este error.

El código del Store Procedure es el siguiente
Código:
CREATE PROCEDURE "SP$REP_FACTURA" 
(
  "FAC_NUMERO" INTEGER
)
RETURNS
(
  "LINEA" VARCHAR(240)
)
AS
BEGIN EXIT; END ^

ALTER PROCEDURE "SP$REP_FACTURA" 
(
  "FAC_NUMERO" INTEGER
)
RETURNS
(
  "LINEA" VARCHAR(240)
)
AS
DECLARE VARIABLE FAC_PREFIJO         VARCHAR(10) ;
  DECLARE VARIABLE FAC_FH_EMISION      TIMESTAMP ;
  DECLARE VARIABLE ESTACION            VARCHAR(16) ;
  DECLARE VARIABLE PRO_CODIGO          VARCHAR(4) ;
  DECLARE VARIABLE LIQ_VEH_ID          VARCHAR(10) ;
  DECLARE VARIABLE LIQ_VEH_FH_ENTRADA  TIMESTAMP ;
  DECLARE VARIABLE LIQ_FH_DESDE        TIMESTAMP ;
  DECLARE VARIABLE LIQ_FH_HASTA        TIMESTAMP ;
  DECLARE VARIABLE LIQ_FH_LIQUIDACION  TIMESTAMP ;
  DECLARE VARIABLE LIQ_TIPO            VARCHAR(15) ;
  DECLARE VARIABLE MEN_NOMBRE          VARCHAR(50) ;
  DECLARE VARIABLE MEN_PLACA           VARCHAR(13) ;
  DECLARE VARIABLE MEN_DESDE           TIMESTAMP ;
  DECLARE VARIABLE MEN_HASTA           TIMESTAMP ;
  DECLARE VARIABLE LDS_COM_CODIGO      VARCHAR(4) ;
  DECLARE VARIABLE LDS_VALOR           NUMERIC(9,2) ;
  DECLARE VARIABLE FAC_SUBTOTAL        NUMERIC(9,2) ;
  DECLARE VARIABLE FAC_TOTAL           NUMERIC(9,2) ;
  DECLARE VARIABLE FIM_IMP_NOMBRE      VARCHAR(20) ;
  DECLARE VARIABLE FIM_IMP_PORCENTAJE  NUMERIC(9,2) ;
  DECLARE VARIABLE FIM_VALOR           NUMERIC(9,2) ;
  DECLARE VARIABLE CONTADOR            INTEGER ;
BEGIN
  /* Busca la factura. */
  SELECT FAC_PREFIJO, FAC_FH_EMISION, FAC_SES_ESTACION, FAC_TOTAL
    FROM TB$FACTURAS
    WHERE FAC_NUMERO = :FAC_NUMERO
    INTO :FAC_PREFIJO, :FAC_FH_EMISION, :ESTACION, :FAC_TOTAL ;
  /* Toma el prefijo de factura. */
  IF ( FAC_PREFIJO IS NULL ) THEN
    FAC_PREFIJO = '' ;
  /* === ENCABEZADO === */
  SELECT CFG_REC_SAL_ENCABEZADO
    FROM TB$CONFIGURACION
    WHERE CFG_ESTACION = :ESTACION
    INTO :LINEA ; SUSPEND ;
  LINEA = '----------------------------------------' ; SUSPEND ;
  LINEA = PADR( 'Factura Nro.', ' ', 19 ) || PADL( FAC_PREFIJO || ' ' || PADL( FAC_NUMERO, '', 10 ), ' ', 21 ) ; SUSPEND ;
  LINEA = PADR( 'Fecha       ', ' ', 30 ) || CAST( FAC_FH_EMISION AS DATE ) ; SUSPEND ;
  LINEA = '----------------------------------------' ; SUSPEND ;
  /* === SI HUBO PARQUEO AGREGA LOS DATOS === */
  PRO_CODIGO = NULL ;
  SELECT DISTINCT( FDT_PRO_CODIGO )
    FROM TB$FACTURA_DETALLE
    WHERE FDT_FAC_NUMERO = :FAC_NUMERO AND FDT_PRO_CODIGO = 'PARQ'
    INTO :PRO_CODIGO ;
  IF ( PRO_CODIGO IS NOT NULL ) THEN BEGIN
    /* === BUSCA LA LIQUIDACION CORRESPONDIENTE === */
    SELECT LIQ_TIPO
      FROM TB$FACTURAS LEFT JOIN TB$LIQUIDACIONES ON LIQ_FAC_NUMERO = FAC_NUMERO
      WHERE FAC_NUMERO = :FAC_NUMERO
      INTO :LIQ_TIPO ;
    /* === FACTURA DE PAGO DE PARQUEO === */
    IF ( LIQ_TIPO IN ( 'Normal', 'Manual', 'Reliquidado', 'Gracia' ) ) THEN BEGIN
      SELECT LIQ_FH_DESDE, LIQ_FH_HASTA, LIQ_VEH_ID, LIQ_VEH_FH_ENTRADA, LIQ_FH_LIQUIDACION
        FROM TB$LIQUIDACIONES LEFT JOIN TB$VEHICULOS ON ( LIQ_VEH_ID = VEH_ID AND LIQ_VEH_FH_ENTRADA = VEH_FH_ENTRADA )
        WHERE LIQ_FAC_NUMERO = :FAC_NUMERO
        INTO :LIQ_FH_DESDE, :LIQ_FH_HASTA, :LIQ_VEH_ID, :LIQ_VEH_FH_ENTRADA, :LIQ_FH_LIQUIDACION ;
      LINEA =       'Concepto     : PARQUEO - ' || LIQ_TIPO ; SUSPEND ;
      LINEA = PADR( 'Placa/Código : ', ' ', 30 ) || PADL( LIQ_VEH_ID, ' ', 10 ) ; SUSPEND ;
      LINEA = PADR( 'Entrada      : ', ' ', 24 ) || STRL( LIQ_FH_DESDE, 16 ) ; SUSPEND ;
      LINEA = PADR( 'Salida       : ', ' ', 24 ) || STRL( LIQ_FH_HASTA, 16 ) ; SUSPEND ;
    END
    /* === FACTURA DE PAGO DE PERDIDO === */
    IF ( LIQ_TIPO = 'Perdido' ) THEN BEGIN
      LINEA = 'Concepto : TIQUETE EXTRAVIADO' ; SUSPEND ;
    END
    LINEA = '----------------------------------------' ; SUSPEND ;
  END
  /* === SI HUBO MENSUALIDAS AGREGA LOS DATOS === */
  PRO_CODIGO = NULL ;
  SELECT DISTINCT( FDT_PRO_CODIGO )
    FROM TB$FACTURA_DETALLE
    WHERE FDT_FAC_NUMERO = :FAC_NUMERO AND FDT_PRO_CODIGO = 'MENS'
    INTO :PRO_CODIGO ;
  IF ( PRO_CODIGO IS NOT NULL ) THEN BEGIN
    /* === BUSCA LA MENSUALIDAD CORRESPONDIENTE === */
    LINEA = 'Concepto : MENSUALIDAD' ; SUSPEND ;
    FOR SELECT MEN_NOMBRE, MEN_PLACA, MEN_DESDE, MEN_HASTA
          FROM TB$MENSUALES
          WHERE MEN_FAC_NUMERO = :FAC_NUMERO
          INTO :MEN_NOMBRE, :MEN_PLACA, :MEN_DESDE, :MEN_HASTA
    DO BEGIN
      LINEA = 'Nombre   : ' || STRL( MEN_NOMBRE, 29 ) ; SUSPEND ;
      LINEA = '  Placa  : ' || MEN_PLACA ; SUSPEND ;
      LINEA = '  Desde  : ' || STRL( MEN_DESDE, 16 ) ; SUSPEND ;
      LINEA = '  Hasta  : ' || STRL( MEN_HASTA, 16 ) ; SUSPEND ;
    END
    LINEA = '----------------------------------------' ; SUSPEND ;
  END
  /* === MISCELANEOS. === */
  LINEA = 'Cnt Descripción                 Subtotal' ; SUSPEND ;
  LINEA = '--- -------------------- ---------------' ; SUSPEND ;
  FOR SELECT PADR( FDT_CANTIDAD, ' ', 3 ) || ' ' ||
             PADR( FDT_PRO_DESCRIPCION, ' ', 20 ) || ' ' ||
             PADL( CURR( FDT_TOTAL ), ' ', 15 )
        FROM TB$FACTURA_DETALLE
        WHERE FDT_FAC_NUMERO = :FAC_NUMERO
        INTO :LINEA
  DO BEGIN
    SUSPEND ;
  END
  LINEA = '                         ===============' ; SUSPEND ;
  LINEA = 'TOTAL A PAGAR   ===>' || PADL( CURR( FAC_TOTAL ), ' ', 20 ) ; SUSPEND ;
  LINEA = '' ; SUSPEND ;
  /* === DESCUENTOS. === */
  FOR SELECT 'Desc: ' || PADR( LDS_COM_NOMBRE, ' ', 20 ) || ' ' ||
             PADL( CURR( LDS_VALOR ), ' ', 13 )
      FROM TB$LIQ_DESCUENTOS
      WHERE ( LDS_LIQ_VEH_ID = :LIQ_VEH_ID )
        AND ( LDS_LIQ_VEH_FH_ENTRADA = :LIQ_VEH_FH_ENTRADA )
        AND ( LDS_LIQ_FH_LIQUIDACION = :LIQ_FH_LIQUIDACION )
      ORDER BY LDS_SECUENCIA
      INTO :LINEA
  DO BEGIN
    SUSPEND ;
  END
  /* === IMPUESTOS === */
  FOR SELECT 'Impu: ' || PADL( MIN( FIM_IMP_PORCENTAJE ), ' ', 5 ) || '%' || ' ' ||
             PADR( STRL( MIN( FIM_IMP_NOMBRE ), 15 ), ' ', 15 ) || ' ' ||
             PADL( CURR( SUM( FIM_VALOR ) ), ' ', 11 )
      FROM TB$FACTURA_IMPUESTOS
      WHERE FIM_FAC_NUMERO = :FAC_NUMERO
      GROUP BY FIM_IMP_CODIGO
      ORDER BY FIM_IMP_CODIGO
      INTO :LINEA
  DO BEGIN
    SUSPEND ;
  END
  /* === PIE DE PAGINA === */
  SELECT CFG_REC_SAL_PIE_PAGINA
    FROM TB$CONFIGURACION
    WHERE CFG_ESTACION = :ESTACION
    INTO :LINEA ;
  SUSPEND ;
END
Responder Con Cita
  #2  
Antiguo 24-05-2006
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

Yo nunca pongo comillas


Código SQL [-]
CREATE PROCEDURE SP$REP_FACTURA
(
  FAC_NUMERO INTEGER
)
RETURNS
(
  LINEA VARCHAR(240)
)
AS
BEGIN 
EXIT; 
END

para borrar

Código SQL [-]
DROP PROCEDURE SP$REP_FACTURA

para modificar

Código SQL [-]
ALTER PROCEDURE SP$REP_FACTURA 
(
  FAC_NUMERO INTEGER
)
RETURNS
(
  LINEA VARCHAR(240)
)
AS
BEGIN 
EXIT; 
END


Tengo 600 procedimientos en la BD y no he tenido ningun problema

Utiliza el IbExpert

Saludos
Responder Con Cita
  #3  
Antiguo 24-05-2006
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola. Creo que olvidaste el SET TERM...

Si utilizas FireBird 1.5 puedes usar CREATE OR ALTER PROCEDURE...

Cita:
Empezado por Ricardo León
Código:
SET TERM ^ ;
CREATE PROCEDURE "SP$REP_FACTURA" 
(
  "FAC_NUMERO" INTEGER
)
RETURNS
(
  "LINEA" VARCHAR(240)
)
AS
BEGIN EXIT; END ^
SET TERM ; ^
 
SET TERM ^ ;
ALTER PROCEDURE "SP$REP_FACTURA" 
(
  "FAC_NUMERO" INTEGER
)
RETURNS
(
  "LINEA" VARCHAR(240)
)
AS
DECLARE VARIABLE FAC_PREFIJO         VARCHAR(10) ;
  DECLARE VARIABLE FAC_FH_EMISION      TIMESTAMP ;
  DECLARE VARIABLE ESTACION            VARCHAR(16) ;
  DECLARE VARIABLE PRO_CODIGO          VARCHAR(4) ;
  DECLARE VARIABLE LIQ_VEH_ID          VARCHAR(10) ;
  DECLARE VARIABLE LIQ_VEH_FH_ENTRADA  TIMESTAMP ;
  DECLARE VARIABLE LIQ_FH_DESDE        TIMESTAMP ;
  DECLARE VARIABLE LIQ_FH_HASTA        TIMESTAMP ;
  DECLARE VARIABLE LIQ_FH_LIQUIDACION  TIMESTAMP ;
  DECLARE VARIABLE LIQ_TIPO            VARCHAR(15) ;
  DECLARE VARIABLE MEN_NOMBRE          VARCHAR(50) ;
  DECLARE VARIABLE MEN_PLACA           VARCHAR(13) ;
  DECLARE VARIABLE MEN_DESDE           TIMESTAMP ;
  DECLARE VARIABLE MEN_HASTA           TIMESTAMP ;
  DECLARE VARIABLE LDS_COM_CODIGO      VARCHAR(4) ;
  DECLARE VARIABLE LDS_VALOR           NUMERIC(9,2) ;
  DECLARE VARIABLE FAC_SUBTOTAL        NUMERIC(9,2) ;
  DECLARE VARIABLE FAC_TOTAL           NUMERIC(9,2) ;
  DECLARE VARIABLE FIM_IMP_NOMBRE      VARCHAR(20) ;
  DECLARE VARIABLE FIM_IMP_PORCENTAJE  NUMERIC(9,2) ;
  DECLARE VARIABLE FIM_VALOR           NUMERIC(9,2) ;
  DECLARE VARIABLE CONTADOR            INTEGER ;
BEGIN
  /* Busca la factura. */
  SELECT FAC_PREFIJO, FAC_FH_EMISION, FAC_SES_ESTACION, FAC_TOTAL
    FROM TB$FACTURAS
    WHERE FAC_NUMERO = :FAC_NUMERO
    INTO :FAC_PREFIJO, :FAC_FH_EMISION, :ESTACION, :FAC_TOTAL ;
  /* Toma el prefijo de factura. */
  IF ( FAC_PREFIJO IS NULL ) THEN
    FAC_PREFIJO = '' ;
  /* === ENCABEZADO === */
  SELECT CFG_REC_SAL_ENCABEZADO
    FROM TB$CONFIGURACION
    WHERE CFG_ESTACION = :ESTACION
    INTO :LINEA ; SUSPEND ;
  LINEA = '----------------------------------------' ; SUSPEND ;
  LINEA = PADR( 'Factura Nro.', ' ', 19 ) || PADL( FAC_PREFIJO || ' ' || PADL( FAC_NUMERO, '', 10 ), ' ', 21 ) ; SUSPEND ;
  LINEA = PADR( 'Fecha       ', ' ', 30 ) || CAST( FAC_FH_EMISION AS DATE ) ; SUSPEND ;
  LINEA = '----------------------------------------' ; SUSPEND ;
  /* === SI HUBO PARQUEO AGREGA LOS DATOS === */
  PRO_CODIGO = NULL ;
  SELECT DISTINCT( FDT_PRO_CODIGO )
    FROM TB$FACTURA_DETALLE
    WHERE FDT_FAC_NUMERO = :FAC_NUMERO AND FDT_PRO_CODIGO = 'PARQ'
    INTO :PRO_CODIGO ;
  IF ( PRO_CODIGO IS NOT NULL ) THEN BEGIN
    /* === BUSCA LA LIQUIDACION CORRESPONDIENTE === */
    SELECT LIQ_TIPO
      FROM TB$FACTURAS LEFT JOIN TB$LIQUIDACIONES ON LIQ_FAC_NUMERO = FAC_NUMERO
      WHERE FAC_NUMERO = :FAC_NUMERO
      INTO :LIQ_TIPO ;
    /* === FACTURA DE PAGO DE PARQUEO === */
    IF ( LIQ_TIPO IN ( 'Normal', 'Manual', 'Reliquidado', 'Gracia' ) ) THEN BEGIN
      SELECT LIQ_FH_DESDE, LIQ_FH_HASTA, LIQ_VEH_ID, LIQ_VEH_FH_ENTRADA, LIQ_FH_LIQUIDACION
        FROM TB$LIQUIDACIONES LEFT JOIN TB$VEHICULOS ON ( LIQ_VEH_ID = VEH_ID AND LIQ_VEH_FH_ENTRADA = VEH_FH_ENTRADA )
        WHERE LIQ_FAC_NUMERO = :FAC_NUMERO
        INTO :LIQ_FH_DESDE, :LIQ_FH_HASTA, :LIQ_VEH_ID, :LIQ_VEH_FH_ENTRADA, :LIQ_FH_LIQUIDACION ;
      LINEA =       'Concepto     : PARQUEO - ' || LIQ_TIPO ; SUSPEND ;
      LINEA = PADR( 'Placa/Código : ', ' ', 30 ) || PADL( LIQ_VEH_ID, ' ', 10 ) ; SUSPEND ;
      LINEA = PADR( 'Entrada      : ', ' ', 24 ) || STRL( LIQ_FH_DESDE, 16 ) ; SUSPEND ;
      LINEA = PADR( 'Salida       : ', ' ', 24 ) || STRL( LIQ_FH_HASTA, 16 ) ; SUSPEND ;
    END
    /* === FACTURA DE PAGO DE PERDIDO === */
    IF ( LIQ_TIPO = 'Perdido' ) THEN BEGIN
      LINEA = 'Concepto : TIQUETE EXTRAVIADO' ; SUSPEND ;
    END
    LINEA = '----------------------------------------' ; SUSPEND ;
  END
  /* === SI HUBO MENSUALIDAS AGREGA LOS DATOS === */
  PRO_CODIGO = NULL ;
  SELECT DISTINCT( FDT_PRO_CODIGO )
    FROM TB$FACTURA_DETALLE
    WHERE FDT_FAC_NUMERO = :FAC_NUMERO AND FDT_PRO_CODIGO = 'MENS'
    INTO :PRO_CODIGO ;
  IF ( PRO_CODIGO IS NOT NULL ) THEN BEGIN
    /* === BUSCA LA MENSUALIDAD CORRESPONDIENTE === */
    LINEA = 'Concepto : MENSUALIDAD' ; SUSPEND ;
    FOR SELECT MEN_NOMBRE, MEN_PLACA, MEN_DESDE, MEN_HASTA
          FROM TB$MENSUALES
          WHERE MEN_FAC_NUMERO = :FAC_NUMERO
          INTO :MEN_NOMBRE, :MEN_PLACA, :MEN_DESDE, :MEN_HASTA
    DO BEGIN
      LINEA = 'Nombre   : ' || STRL( MEN_NOMBRE, 29 ) ; SUSPEND ;
      LINEA = '  Placa  : ' || MEN_PLACA ; SUSPEND ;
      LINEA = '  Desde  : ' || STRL( MEN_DESDE, 16 ) ; SUSPEND ;
      LINEA = '  Hasta  : ' || STRL( MEN_HASTA, 16 ) ; SUSPEND ;
    END
    LINEA = '----------------------------------------' ; SUSPEND ;
  END
  /* === MISCELANEOS. === */
  LINEA = 'Cnt Descripción                 Subtotal' ; SUSPEND ;
  LINEA = '--- -------------------- ---------------' ; SUSPEND ;
  FOR SELECT PADR( FDT_CANTIDAD, ' ', 3 ) || ' ' ||
             PADR( FDT_PRO_DESCRIPCION, ' ', 20 ) || ' ' ||
             PADL( CURR( FDT_TOTAL ), ' ', 15 )
        FROM TB$FACTURA_DETALLE
        WHERE FDT_FAC_NUMERO = :FAC_NUMERO
        INTO :LINEA
  DO BEGIN
    SUSPEND ;
  END
  LINEA = '                         ===============' ; SUSPEND ;
  LINEA = 'TOTAL A PAGAR   ===>' || PADL( CURR( FAC_TOTAL ), ' ', 20 ) ; SUSPEND ;
  LINEA = '' ; SUSPEND ;
  /* === DESCUENTOS. === */
  FOR SELECT 'Desc: ' || PADR( LDS_COM_NOMBRE, ' ', 20 ) || ' ' ||
             PADL( CURR( LDS_VALOR ), ' ', 13 )
      FROM TB$LIQ_DESCUENTOS
      WHERE ( LDS_LIQ_VEH_ID = :LIQ_VEH_ID )
        AND ( LDS_LIQ_VEH_FH_ENTRADA = :LIQ_VEH_FH_ENTRADA )
        AND ( LDS_LIQ_FH_LIQUIDACION = :LIQ_FH_LIQUIDACION )
      ORDER BY LDS_SECUENCIA
      INTO :LINEA
  DO BEGIN
    SUSPEND ;
  END
  /* === IMPUESTOS === */
  FOR SELECT 'Impu: ' || PADL( MIN( FIM_IMP_PORCENTAJE ), ' ', 5 ) || '%' || ' ' ||
             PADR( STRL( MIN( FIM_IMP_NOMBRE ), 15 ), ' ', 15 ) || ' ' ||
             PADL( CURR( SUM( FIM_VALOR ) ), ' ', 11 )
      FROM TB$FACTURA_IMPUESTOS
      WHERE FIM_FAC_NUMERO = :FAC_NUMERO
      GROUP BY FIM_IMP_CODIGO
      ORDER BY FIM_IMP_CODIGO
      INTO :LINEA
  DO BEGIN
    SUSPEND ;
  END
  /* === PIE DE PAGINA === */
  SELECT CFG_REC_SAL_PIE_PAGINA
    FROM TB$CONFIGURACION
    WHERE CFG_ESTACION = :ESTACION
    INTO :LINEA ;
  SUSPEND ;
END
SET TERM ; ^
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #4  
Antiguo 24-05-2006
Ricardo León Ricardo León is offline
Miembro
 
Registrado: ago 2005
Posts: 41
Poder: 0
Ricardo León Va por buen camino
Thumbs up

Muchas gracias por sus respuestas. Ejecute lo que habia hecho desde el ibexpert y funciona ok.
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
Store Procedure en intebase jgutti Firebird e Interbase 2 12-05-2006 15:12:55
Store procedure en firebird ronimaxh Firebird e Interbase 4 19-04-2006 11:42:12
Store Procedure en Delphi carlomagno Firebird e Interbase 5 21-09-2005 20:24:22
incremento de store procedure uper Firebird e Interbase 5 21-04-2004 19:15:59
store procedure ronimaxh Firebird e Interbase 2 24-06-2003 20:20:22


La franja horaria es GMT +2. Ahora son las 22:19:08.


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