Ver la Versión Completa : problema con stored procedure
Markoz
25-06-2003, 21:24:35
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
kinobi
25-06-2003, 22:14:05
Hola,
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
Markoz
25-06-2003, 23:29:00
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
kinobi
26-06-2003, 00:16:51
Hola,
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.
emili
26-06-2003, 19:41:00
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
Markoz
26-06-2003, 23:54:00
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
emili
27-06-2003, 10:39:18
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!!;)
emili
27-06-2003, 10:41:15
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.
:D
Hola Markoz,
no lo he probado pero el error
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.