![]() |
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 |
Hola,
Cita:
Saludos |
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 |
Hola,
Cita:
Sería conveniente una validación de la base de datos, para descartar que haya algún problema de corrupción. Saludos. |
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 |
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 |
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!!;) |
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 Cita:
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 02:27:53. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi