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 25-06-2003
Markoz Markoz is offline
Miembro
 
Registrado: jun 2003
Ubicación: Los Mochis, Sinaloa, Mexico
Posts: 28
Poder: 0
Markoz Va por buen camino
problema con stored procedure

Tengo una tabla de la cual hice un respaldo, segui trabajando con la original, pero ahora marca un erro en el procedimiento

CREATE PROCEDURE VENTA
AS
begin
INSERT INTO HISTVENTAS SELECT * FROM TMPVENTAS;
end

el cual pasa todos los datos de una tabla a otra, pero si corro exactamente el mismo procedimiento en la tabla de respaldo (que esta escrito exactamente), si funciona, alguien tiene idea por que?

gracias a todos
__________________
In Code I Trust
www.geekmx.com
http://markitoz/blogspot.com
Responder Con Cita
  #2  
Antiguo 25-06-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Markoz
Tengo una tabla de la cual hice un respaldo, segui trabajando con la original, pero ahora marca un erro en el procedimiento [...]
si no nos cuentas los síntomas (tipo de error, mensajes que envía el servidor, en qué momento: ¿al compilarlo, al ejecutarlo?, ...) es difícil dar un pronóstico.

Saludos
Responder Con Cita
  #3  
Antiguo 26-06-2003
Markoz Markoz is offline
Miembro
 
Registrado: jun 2003
Ubicación: Los Mochis, Sinaloa, Mexico
Posts: 28
Poder: 0
Markoz Va por buen camino
Si, lo olvide, iba de salida a comer y me apuraban, perdon.

frmCompile.q_COMPILE:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Count of columns does not equal count of values.

ese es el error al compilar el procedimiento, pero antes de verificarlo, me marco error cuando corria el sistema en delphi, de donde llamo al procedimiento almacenado, para modificarlo utilizo QuickDesk 2.9
__________________
In Code I Trust
www.geekmx.com
http://markitoz/blogspot.com
Responder Con Cita
  #4  
Antiguo 26-06-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Markoz
Count of columns does not equal count of values.
lo único que se me ocurre es lo que dice el mensaje de error, que el número y tipo de los campos de ambas tablas, HISTVENTAS y TMPVENTAS, no coincida.

Sería conveniente una validación de la base de datos, para descartar que haya algún problema de corrupción.

Saludos.
Responder Con Cita
  #5  
Antiguo 26-06-2003
emili emili is offline
Miembro
 
Registrado: jun 2003
Ubicación: Ontinyent (Valencia)
Posts: 14
Poder: 0
emili Va por buen camino
Coincido con Kinobi. Debe ser problema de los campos de las tablas. Deben ser identicas. Tipos, tamaños, etc.

Si esta todo en orden prueba con seleccionar los campos (fisicamente) y introducirlos tambien en el insert. Me paso algo parecido hace tiempo y con esto se soluciono.

INSERT INTO HISTVENTAS(NUM_PEDIDO, CLIENTE, FORMA_PAGO ...) SELECT NUM_PEDIDO, CLIENTE, FORMA_PAGO, ... FROM TMPVENTAS WHERE ...


Saludos
Responder Con Cita
  #6  
Antiguo 27-06-2003
Markoz Markoz is offline
Miembro
 
Registrado: jun 2003
Ubicación: Los Mochis, Sinaloa, Mexico
Posts: 28
Poder: 0
Markoz Va por buen camino
Al llamar dicho prodecedimiento almacenado desde Delphi

CREATE PROCEDURE ALCARRITO
AS
begin
INSERT INTO HISTVENTAS SELECT * FROM TMPVENTAS;
end

me envia el siguiente error

Project SDerre.exe raised exception class EIBInterbaseError with message
'Dynamic SQL Error
SQL Error code = -84
Procedure ALCARRITO does not return any values'


Muchas gracias, me han ayudado mucho a entrarle a Interbase
__________________
In Code I Trust
www.geekmx.com
http://markitoz/blogspot.com
Responder Con Cita
  #7  
Antiguo 27-06-2003
emili emili is offline
Miembro
 
Registrado: jun 2003
Ubicación: Ontinyent (Valencia)
Posts: 14
Poder: 0
emili Va por buen camino
Te faltan los parentesi:


CREATE PROCEDURE VENTA ()
AS
begin
INSERT INTO HISTVENTAS SELECT * FROM TMPVENTAS;
end;


Tambien le puedes pasar parametros al procedure. Te pongo un ejemplo:

ALTER PROCEDURE BAJARIESGOS (RIESGO INTEGER, EJE SMALLINT)
AS
begin
UPDATE HRIESGOS SET
F_BAJA='TODAY',
ACTIVO='N'
WHERE NUM_RIES=:RIESGO AND EJE=:EJE;
end;


Saludos!!
Responder Con Cita
  #8  
Antiguo 27-06-2003
emili emili is offline
Miembro
 
Registrado: jun 2003
Ubicación: Ontinyent (Valencia)
Posts: 14
Poder: 0
emili Va por buen camino
Perdon. Se me ha pasado poner

CREATE PROCEDURE .... en vez de
ALTER PROCEDURE....

Esto lo podrás usar para modificar el Store procedure sin tener que borrarlo y volverlo a crear.


Responder Con Cita
  #9  
Antiguo 27-06-2003
Avatar de aom
aom aom is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 106
Poder: 21
aom Va por buen camino
Hola Markoz,
no lo he probado pero el error

Cita:
Procedure ALCARRITO does not return any values
es posible que te aparezca por el método que utilizas para ejecutar la sentencia en Delphi.
Debe ejecutar ExecSQL cuando la sentencia no te devuelva valores (insert, delete, etc...) y Open cuando la sí los devuelva (select)

Saludos
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


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


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