Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   problema con stored procedure (https://www.clubdelphi.com/foros/showthread.php?t=1741)

Markoz 25-06-2003 21:24:35

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

kinobi 25-06-2003 22:14:05

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

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,

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.

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

aom 27-06-2003 13:46:31

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


La franja horaria es GMT +2. Ahora son las 07:48:44.

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