FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Stored Procedure,Triggers
Saludos al Foro y Feliz Año Nuevo.
Vamos con la primera pregunta del año. Tengo una pega y no encuentro ni explicación ni solución, haber si me ayudan a ver la Luz. Entorno: D6, FB15 ,componentes interbase. Inicialmente mediante un ibQuery desde delphi podía generar una nueva base de datos, creando tablas dominios, indices, Stored Procedure (SP),Triggers, en fin todo era felicidad...... Pero llego el día en que tuve que realizar una modificación en un SP, mediante un ibQuery realicé un RECREATE, y me devolvio el siguiente error: SQL error = 104 Token unknown -line 1,char xxx ?'. Proc....... Es lógico pensar que me equivoque. Tome la desición de borrar y crear el SP para evitar volver a utilizar RECREATE. Comenzo el calvario, podía perfectamente borrar el SP, pero al crearlo me devolvía el mismo error (Cambia el char), dejaba el cuerpo del SP vacío y me lo creaba, pero, si introducía cualquier instrucción el error salta y no lo crea. Mi estado de crisis aumenta cuando utilizo código de la SP original (sin tocar) y me devuelve el mismo error. Cuando hago un Copy-Paste del SP desde delphi al editor sql del ibExpert y lo ejecuto funciona perfectamente. Lo mismo me ha pasado al modificar un trigger, lo he conseguido desde ibExpert, aunque originalmnte lo podia hacer desde delphi (Creación del trigger). No se que pasa, quizás sea un problema de los componentes de interbase.... Espero no haber liado mucho la pregunta. Saludos |
#2
|
||||
|
||||
Saludos compañero,
Has resuelto tu poblema? Te comento que me ocurrio lo mismo.... y es como tu dices, el problema era los componentes. (habia actualizado por otra version). Your friend, StarKill Lima-Perú |
#3
|
||||
|
||||
Buenasssssssssss
Lo he solucionado a medias de momento. Formateé el disco duro y volvi a instalar delphi y todo lo demas. He conseguido que la aplicación que antes genaraba bien las Bases de datos, lo vuelva a hacer, pero todavía no he conseguido cambiar el cuerpo del Trigger y Sp desde una aplicación. Seguiré probando (Todavía estamos a principio de año ) Saludos |
#4
|
||||
|
||||
Supongo que metes el código DDL en un query tal que así:
y posteriormente lo ejetutas con Query.ExecSQL Si es así, y según el error que aportas, la sintaxis es errónea. Mira por si acaso en ese procedimiento que quieres ejecutar, tal vez quieras utilizar una variable tipo DATE y dependiendo del Dialecto de tu BD, a lo mejor no te lo permite y tendría que utilizar Timestamp. Suele ser un error muy común..
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO |
#5
|
||||
|
||||
Cita:
Me impresiona, sorprende, confunde, extraña, fascina, desconcierta, me deja perplejo la "facilidad" con que muchos solucionan cualquier tipo de problema informático.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#6
|
||||
|
||||
Casimiro, no ha dicho explicitamente que formateando se haya quitado el error, simplemente ha dicho que ha formateado y que parcialmente ha solucionado el error... puede no que estén las dos cosas íntimamente relacionadas .
Claro, como tú no usas windows, no sabes que hay que formatearlo cada cierto tiempo Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#7
|
||||
|
||||
Saludos a todos.
Efectivamente, el formatear el disco no es una solución. Pero era algo que tenía pendiente y aproveche el momento y encontré esa solución parcial. En contestación a ArdiIIa, el código que utilizo es: Código:
const SP_AE_CLI_NO_HAB = 'CREATE PROCEDURE SP_AE_CLI_NO_HAB '+ '(ALB CHAR(6),FAC CHAR(6),FECHAFAC DATE,COD2 CHAR(10)) AS '+ ' DECLARE VARIABLE CODFAC CHAR(6); '+ ' DECLARE VARIABLE CLI CHAR(6); '+ ' DECLARE VARIABLE AGE CHAR(6); '+ ' DECLARE VARIABLE ALM CHAR(6); '+ ' DECLARE VARIABLE PU CHAR(6); '+ ' DECLARE VARIABLE FPAGO DATE; '+ ' DECLARE VARIABLE COB NUMERIC(16,2); '+ ' DECLARE VARIABLE SAL NUMERIC(16,2); '+ ' DECLARE VARIABLE BASI NUMERIC(16,2); '+ ' DECLARE VARIABLE IV NUMERIC(16,2); '+ ' DECLARE VARIABLE R NUMERIC(16,2); '+ ' DECLARE VARIABLE TOT NUMERIC(16,2); '+ ' DECLARE VARIABLE PA SMALLINT; '+ ' DECLARE VARIABLE REI SMALLINT; '+ ' DECLARE VARIABLE FECHAXX DATE; '+ ' DECLARE VARIABLE AUX VARCHAR(60); '+ 'BEGIN '+ // SE TOMA ALBARÁN ' SELECT CODCLIENTE,CODAGENTE,CODALMACEN,PUESTO,FECHAPAGO,COBRADO,SALDO,BASEIMP,IVA,RE,TOTAL,PAGADO,'+ 'REGIMENIVA,CODFACTURA '+ ' FROM '+NOMBRE_DOCUMENTOS+' ' + ' WHERE CODALBARAN = :ALB '+ ' INTO :CLI,:AGE,:ALM,:PU,:FPAGO,:COB,:SAL,:BASI,:IV,:R,:TOT,:PA,:REI,:CODFAC; '+ ' IF (:FAC <> :CODFAC) THEN '+ ' BEGIN '+ // SE ACTUALIZA FACTURA ' UPDATE '+NOMBRE_FACTURAS+' ' + ' SET ' + ' CODCLIENTE = :CLI, '+ ' CODAGENTE = :AGE, '+ ' CODALMACEN = :ALM, '+ ' PUESTO = :PU, '+ ' HORA = current_time, '+ ' REGIMENIVA = :REI, '+ ' IMPRIMIDO = 0 '+ ' WHERE CODFACTURA = :FAC; '+ // SE ACTUALIZA ALBARAN ' UPDATE '+NOMBRE_DOCUMENTOS+' ' + ' SET ' + ' CODFACTURA = :FAC, '+ ' FECHAFAC = :FECHAFAC '+ ' WHERE CODALBARAN = :ALB; '+ // SE ACTUALIZA MOVIMIENTOS ' UPDATE '+NOMBRE_MOVIMIENTOS+' ' + ' SET ' + ' CODFACTURA = :FAC, '+ ' FECHAFAC = :FECHAFAC '+ ' WHERE CODALBARAN = :ALB; '+ // SE ACTUALIZA CNH ' UPDATE '+NOMBRE_CNH_S+' ' + ' SET ' + ' CODFACTURA = :FAC '+ ' WHERE CODALBARAN = :ALB; '+ ' END '+ ' FECHAXX = current_date; '+ ' AUX = '+''''+'PAGO FAC. '+''''+'|| :FAC || '+''''+'/'+''''+' || EXTRACT( year from :FECHAFAC); '+ // SE ACTUALIZA FACTURA ' UPDATE '+NOMBRE_FACTURAS+' ' + ' SET ' + ' FECHAPAGO = :FECHAXX, '+ ' COBRADO = :TOT, '+ ' SALDO = 0, '+ ' BASEIMP = :BASI, '+ ' IVA = :IV, '+ ' RE = :R, '+ ' TOTAL = :TOT, '+ ' PAGADO = 1 '+ ' WHERE CODFACTURA = :FAC; '+ // SE BORRA APUNTES COBROS EXISTENTE ' DELETE FROM '+NOMBRE_COBROS+' ' + ' WHERE CODIGO = :FAC '+ ' AND CODIGO2 = :COD2 '+ ' AND TIPO = 1; '+ // SE INSERTA APUNTES COBROS ' INSERT INTO '+NOMBRE_COBROS+' '+ ' (CODIGO,CODIGO2,EMISORCOB,TIPO,FECHA,CONCEPTO,IMPORTE,FILA,CODCONCEPT,FECHADOC,CODCLIENTE,CODAGENTE) '+ ' VALUES (:FAC,:COD2,:COD2,1,:FECHAXX,:AUX,:TOT,1,'+''''+'000000'+''''+',:FECHAFAC,:CLI,:AGE); '+ // SE ACTUALIZA CAJA ' EXECUTE PROCEDURE SP_ACTUALIZACAJA :FECHAXX; '+ 'END '; procedure TForm2.Button3Click(Sender: TObject); begin ibT1.StartTransaction; try ibQMovimientos.SQL.Clear; ibQMovimientos.SQL.Add(SP_AE_CLI_NO_HAB); application.ProcessMessages; ibQMovimientos.ExecSQL; ibt1.Commit; showmessage('Ok Crea'); except if ibt1.InTransaction then ibt1.Rollback; showmessage('Error Crea'); end; end; los identificadores como "NOMBRE_COBROS", son constantes que continen el nombre de la tabla. Este código me genera el error que os he dicho, pero si lo ejecuto desde el ibExpert me funciona bien (lógicamente cambiando las constantes por los nombres de las tablas) No utilizo el comando supend, ni tampoco utilizo el signo ^. Saludos |
#8
|
||||
|
||||
Cita:
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO |
#9
|
||||
|
||||
Muchas gracias.
El dialecto que utilizo es el 3. En cuanto pueda voy hacer las pruebas para comprobar esto. Ya te comentaré. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ocultar código de Stored Procedures y Triggers en FireBird... | jncrls | Firebird e Interbase | 4 | 08-01-2007 17:51:52 |
Problema con stored procedure | dape | Firebird e Interbase | 11 | 20-10-2005 06:13:23 |
Se puede en stored procedure? | Abelardo | Firebird e Interbase | 0 | 09-04-2004 01:00:48 |
Ver los Stored Procedure | tgsistemas | SQL | 0 | 06-04-2004 18:18:22 |
Stored Procedure | tgsistemas | SQL | 1 | 27-02-2004 14:10:33 |
|