Ver Mensaje Individual
  #1  
Antiguo 29-09-2008
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Reputación: 21
jzginez Va por buen camino
error al crear base de datos desde ddl

Hola amigos estoy usando firebird 2 e IBExpert, tengo una base de datos funcionando correctamente (por lo
menos para lo que la requiero , puede tener muchas correcciones), para instalar mi aplicación en una
nueva maquina extrage de la base de datos el código ddl con la opcion extraer metadatos, al ejecutar este
código el IBExpert me da 3 errores iguales en diferentes procedimientos:

Código SQL [-]

/*******************************************************************************

The next statement causes the following error: 



Invalid token.

invalid request BLR at offset 480.

Procedure V_DETALLEPRODUCTO is not selectable (it does not contain a SUSPEND statement).

*******************************************************************************/

ALTER PROCEDURE P_GRUPOPRECIOS (

    CLIENTE INTEGER,

    PRODUCTO INTEGER)

RETURNS (

    ID_UNIMED INTEGER,

    ABREVIATURA VARCHAR(10),

    PRECIO NUMERIC(15,2),

    IMPUESTO NUMERIC(15,2),

    TOTAL NUMERIC(15,2),

    LIMITE INTEGER)

AS

declare variable temp char(1) character set iso8859_1;

begin

  /* Procedure Text */

  For select t_preciosespeciales.precio from t_preciosespeciales where t_preciosespeciales.id_cliente
= :cliente and t_preciosespeciales.id_producto = :_producto into :_precio do

    Begin

        Select t_impuestos.monto from t_impuestos where t_impuestos.id = (select
t_detalleproducto.id_impuestov from t_detalleproducto where t_detalleproducto.id = :_producto)
into :impuesto;

        impuesto = precio * impuesto / 100;

        total = precio + impuesto;

        limite = 1;

        id_unimed = 0;

        abreviatura = 'ESP';

        suspend;

    End

  for select v_detalleproducto.id_unimedmenudeo, v_detalleproducto.preciomenudeo,
v_detalleproducto.impuestomenudeo, v_detalleproducto.totalmenudeo, v_detalleproducto.ventamedmayoreo,
v_detalleproducto.minimomenudeo from v_detalleproducto where v_detalleproducto.id = :_producto
into :id_unimed, :_precio, :impuesto, :total, :temp, :limite do

    begin

        Select t_unidadmedida.abreviatura from t_unidadmedida where t_unidadmedida.id = :id_unimed
into :abreviatura;

        suspend;

    End

  if (temp = 'S') then

  for select v_detalleproducto.id_unimedmedmayoreo, v_detalleproducto.preciomedmayoreo,
v_detalleproducto.impuestomedmayoreo, v_detalleproducto.totalmedmayoreo, v_detalleproducto.ventamayoreo,
v_detalleproducto.minimomedmayoreo from v_detalleproducto where v_detalleproducto.id = :_producto
into :id_unimed, :_precio, :impuesto, :total, :temp, :limite do

    begin

        Select t_unidadmedida.abreviatura from t_unidadmedida where t_unidadmedida.id = :id_unimed
into :abreviatura;

        suspend;

    End

  if (temp = 'S') then

  for select v_detalleproducto.id_unimedmayoreo, v_detalleproducto.preciomayoreo,
v_detalleproducto.impuestomayoreo, v_detalleproducto.totalmayoreo, v_detalleproducto.minimomayoreo from
v_detalleproducto where v_detalleproducto.id = :_producto
into :id_unimed, :_precio, :impuesto, :total, :limite do

    begin

        Select t_unidadmedida.abreviatura from t_unidadmedida where t_unidadmedida.id = :id_unimed
into :abreviatura;

        suspend;

    End

end

;



/*******************************************************************************

The next statement causes the following error: 



Invalid token.

invalid request BLR at offset 2244.

Procedure V_COBROS is not selectable (it does not contain a SUSPEND statement).

*******************************************************************************/

ALTER PROCEDURE V_CLIENTES

RETURNS (

    ID INTEGER,

    FECHA DATE,

    ID_DESCUENTO INTEGER,

    DESC_DESCUENTO VARCHAR(30),

    MONTO DECIMAL(18,2),

    ID_CLASIFICACION INTEGER,

    DESC_CLASIFICACION VARCHAR(30),

    VENDER CHAR(1),

    CREDITO CHAR(1),

    PERSONAFISICA CHAR(1),

    SIGLAS VARCHAR(40),

    APENOM VARCHAR(123),

    NOMFACT VARCHAR(150),

    FECNACIMIENTO DATE,

    RFC VARCHAR(15),

    CURP VARCHAR(19),

    NACIONAL CHAR(1),

    DIRECCION VARCHAR(60),

    COLONIA VARCHAR(50),

    ID_MUNICIPIO INTEGER,

    MUNICIPIO VARCHAR(40),

    ID_ESTADO INTEGER,

    EDO VARCHAR(5),

    LOCALIDAD VARCHAR(50),

    CP VARCHAR(5),

    REFERENCIA VARCHAR(50),

    OTRA VARCHAR(50),

    MISMADIRECCION CHAR(1),

    E_NACIONAL CHAR(1),

    E_DIRECCION VARCHAR(60),

    E_COLONIA VARCHAR(50),

    E_ID_MUNICIPIO INTEGER,

    E_MUNICIPIO VARCHAR(40),

    E_ID_ESTADO INTEGER,

    E_EDO VARCHAR(5),

    E_LOCALIDAD VARCHAR(50),

    E_CP VARCHAR(5),

    E_OTRA VARCHAR(50),

    E_REFERENCIA VARCHAR(50),

    REPRESENTANTE VARCHAR(93),

    PUESTO VARCHAR(30),

    LADA VARCHAR(3),

    TELEFONO_1 VARCHAR(20),

    TELEFONO_2 VARCHAR(20),

    TELEFONO_3 VARCHAR(20),

    FAX VARCHAR(20),

    EXTENSION INTEGER,

    EMAIL VARCHAR(30),

    HTTP VARCHAR(30),

    COMENTARIOS BLOB SUB_TYPE 1 SEGMENT SIZE 80,

    COI VARCHAR(15),

    ID_USUARIO VARCHAR(10),

    NOMBRE VARCHAR(90),

    NUMEROPROVEE INTEGER,

    COBROS DECIMAL(15,2),

    ABONOS DECIMAL(15,2),

    SALDO DECIMAL(15,2))

AS

BEGIN

  FOR

    SELECT T_CLIENTES.ID, T_CLIENTES.FECHA, T_CLIENTES.ID_DESCUENTO, T_DESCUENTOS.DESCRIPCION,

           T_DESCUENTOS.MONTO, T_CLIENTES.ID_CLASIFICACION, T_CLASIFICACIONES.DESCRIPCION,

           T_CLASIFICACIONES.VENDER, T_CLASIFICACIONES.CREDITO, T_CLIENTES.PERSONAFISICA,

           T_CLIENTES.SIGLAS, T_CLIENTES.APENOM, t_clientes.nomfact, T_CLIENTES.FECNACIMIENTO,
T_CLIENTES.RFC, T_CLIENTES.CURP, T_CLIENTES.NACIONAL, T_CLIENTES.DIRECCION, T_CLIENTES.COLONIA,
T_CLIENTES.ID_MUNICIPIO, T_MUNICIPIOS.MUNICIPIO, T_MUNICIPIOS.ID_ESTADO, T_ESTADOS.ABREVIATURA edo,
T_CLIENTES.LOCALIDAD, T_CLIENTES.CP, T_CLIENTES.REFERENCIA, T_CLIENTES.OTRA, T_CLIENTES.MISMADIRECCION,
T_CLIENTES.E_NACIONAL, T_CLIENTES.E_DIRECCION, T_CLIENTES.E_COLONIA, T_CLIENTES.E_ID_MUNICIPIO,
T_MUNICIPIOS1.MUNICIPIO e_MUNICIPIO, T_MUNICIPIOS1.ID_ESTADO e_ID_ESTADO, T_ESTADOS1.ABREVIATURA e_edo,
T_CLIENTES.E_LOCALIDAD, T_CLIENTES.E_CP, T_CLIENTES.E_OTRA, T_CLIENTES.E_REFERENCIA,
T_CLIENTES.REPRESENTANTE, T_CLIENTES.PUESTO, T_CLIENTES.LADA, T_CLIENTES.TELEFONO_1, T_CLIENTES.TELEFONO_2,
T_CLIENTES.TELEFONO_3, T_CLIENTES.FAX, T_CLIENTES.EXTENSION, T_CLIENTES.EMAIL, T_CLIENTES.HTTP,
T_CLIENTES.COMENTARIOS, T_CLIENTES.COI, T_CLIENTES.ID_USUARIO, T_USUARIOS.NOMBRE, T_CLIENTES.NUMEROPROVEE

    FROM T_CLIENTES

       left JOIN T_DESCUENTOS ON (T_CLIENTES.ID_DESCUENTO = T_DESCUENTOS.ID)

       left outer JOIN T_CLASIFICACIONES ON (T_CLIENTES.ID_CLASIFICACION = T_CLASIFICACIONES.ID)

       left outer JOIN T_MUNICIPIOS ON (T_CLIENTES.ID_MUNICIPIO = T_MUNICIPIOS.ID)

       left outer JOIN T_ESTADOS ON (T_MUNICIPIOS.ID_ESTADO = T_ESTADOS.ID)

       left outer JOIN T_MUNICIPIOS T_MUNICIPIOS1 ON (T_CLIENTES.E_ID_MUNICIPIO = T_MUNICIPIOS1.ID)

       left outer JOIN T_ESTADOS T_ESTADOS1 ON (T_MUNICIPIOS1.ID_ESTADO = T_ESTADOS1.ID)

       left outer JOIN T_USUARIOS ON (T_CLIENTES.ID_USUARIO = T_USUARIOS.ID)

    INTO :ID, :FECHA, :ID_DESCUENTO, :_DESC_DESCUENTO, :MONTO, :ID_CLASIFICACION, :_DESC_CLASIFICACION, :VENDER, :CREDITO,
         :_pERSONAFISICA, :SIGLAS, :APENOM, :nomfact, :FECNACIMIENTO, :RFC, :CURP, :NACIONAL, :_DIRECCION, :COLONIA, :ID_MUNICIPIO, :MUNICIPIO, :ID_ESTADO,
         :EDO, :LOCALIDAD, :CP, :REFERENCIA, :OTRA, :MISMADIRECCION, :E_NACIONAL, :E_DIRECCION, :E_COLONIA, :E_ID_MUNICIPIO, :E_MUNICIPIO,
         :E_ID_ESTADO, :E_EDO, :E_LOCALIDAD, :E_CP, :E_OTRA, :E_REFERENCIA, :REPRESENTANTE, :_pUESTO, :LADA, :TELEFONO_1, :TELEFONO_2, :TELEFONO_3, :FAX,
         :EXTENSION, :EMAIL, :HTTP, :COMENTARIOS, :COI, :ID_USUARIO, :NOMBRE, :NUMEROPROVEE DO
  BEGIN

    select sum(v_cobros.mensualidad), sum(v_cobros.abonos) from v_cobros where v_cobros.id_cliente = :id
into :COBROS, :ABONOS;

    if (cobros is null) then cobros = 0;

    if (abonos is null) then abonos = 0;

    saldo = cobros - abonos;

    SUSPEND;

  END

END

;



/*******************************************************************************

The next statement causes the following error: 



Invalid token.

invalid request BLR at offset 280.

Procedure V_VENTAS is not selectable (it does not contain a SUSPEND statement).

*******************************************************************************/

ALTER PROCEDURE V_HISTORICOVENTAS

RETURNS (

    ID_PRODUCTO INTEGER,

    ID INTEGER,

    FECHA DATE,

    APENOM VARCHAR(123),

    DESC_DOCUMENTO VARCHAR(20),

    NUMDOCUMENTO INTEGER,

    CANTIDAD INTEGER,

    PRECIOVENTA NUMERIC(18,4),

    TOTALVENTA NUMERIC(18,4))

AS

BEGIN

  FOR

    SELECT

        t_productosalmacen.id_producto,

        V_VENTAS.ID,

        V_VENTAS.FECHA,

        V_VENTAS.apenom,

        V_VENTAS.desc_documento,

        V_VENTAS.NUMDOCUMENTO,

        V_DETALLEVENTAS.cantidad,

        V_DETALLEVENTAS.precioventa,

        V_DETALLEVENTAS.totalventa

    FROM t_PRODUCTOSALMACEN

       INNER JOIN t_DETALLEPRODUCTO ON (t_PRODUCTOSALMACEN.ID = t_DETALLEPRODUCTO.ID_PRODUCTO)

       INNER JOIN V_DETALLEVENTAS ON (t_DETALLEPRODUCTO.ID = V_DETALLEVENTAS.id_detalleproducto)

       INNER JOIN V_VENTAS ON (V_DETALLEVENTAS.ID_VENTA = V_VENTAS.ID)

    WHERE 

       (

          (V_VENTAS.CANCELADA = 'N')

       and 

          (V_VENTAS.DEVUELTA = 'N')

        )

    INTO :ID_PRODUCTO,

         :ID,

         :FECHA,

         :APENOM,

         :_DESC_DOCUMENTO,

         :NUMDOCUMENTO,

         :CANTIDAD,

         :_pRECIOVENTA,

         :TOTALVENTA

  DO

  BEGIN

    SUSPEND;

  END

END

;

y no me crea estos procedimiento, lo que me llama la atención es que el mensaje de error hace referencia a otros procedimientos los cuales son:

Código SQL [-]
           PERDÓN ESTE CÓDIGO ESTABA MAL LO REPETI EN MI SIGUIENTE MENSAJE

pero estos 3 procedimientos funcionan bien, por lo cual dedusco que el error esta en mi forma de estruccturar los procedimiento, alguien me puede ayudar y decir que estoy haciendo mal.



Gracias
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México

Última edición por jzginez fecha: 30-09-2008 a las 14:44:09. Razón: error en el segundo código sql
Responder Con Cita