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)
-   -   Error al ejecutar la sentencia update en firebird (https://www.clubdelphi.com/foros/showthread.php?t=88929)

Maribel09 28-08-2015 01:04:05

Error al ejecutar la sentencia update en firebird
 
Hola , soy nueva en el foro, les agradecería mucho si me pudieran ayudar con este error :)

Estoy tratando de realizar un update con dos tablas la sentencia es la siguiente:
Código SQL [-]
update CUENTAS set ESFLUJO=1
 from CUENTAS CTA inner join ctarub RU on CTA.NUM_CTA = RU.CUENTA where RU.RUBRO=11
Se visualiza el siguiente error:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, column 2.
from.

En sql funciona correctamente la sentencia en firebird no.
Saludos yque tengan un buen día

gramajo 28-08-2015 02:04:31

Revisa tu sintaxis por lo que veo POSTGRESQL admite from, pero FIREBIRD no lo admite.

Sintáxis de update para postgresql
http://www.postgresql.org/docs/9.1/s...ql-update.html

Sintáxis de update para firebird
http://www.firebirdsql.org/refdocs/l...21-update.html


Haré una prueba en firebird, luego hablamos, espero estos enlaces te ayuden. Saludos!

ecfisa 28-08-2015 02:06:37

Hola Maribel09, bienvenida a los foros de Club Delphi :)

Como acostumbramos con los nuevos miembros, te invitamos a la lectura de nuestra guía de estilo.

¿ Podrías explicarnos (con tus palabras) la relación entre las tablas y bajo que condición deseas que se actualice la columna ESFLUJO ?

Saludos :)

gramajo 28-08-2015 02:36:24

He encontrado alguna información al respecto, espero te sirva.

http://www.clubdelphi.com/foros/showthread.php?t=50763

ecfisa 28-08-2015 04:25:14

Hola Maribel09.

Si la relacion se establece por las columnas CUENTAS.NUM_CTA y CTARUB.CUENTA, se me ocurren dos modos de hacer lo que buscas:

1:
Código SQL [-]
UPDATE CUENTAS SET ESFLUJO = 1
WHERE EXISTS (SELECT RU.CUENTA FROM CTARUB RU
              WHERE RUBRO = 11 AND CUENTAS.NUM_CTA = RU.CUENTA)
2:
Código SQL [-]
UPDATE CUENTAS SET ESFLUJO = COALESCE((SELECT 1 FROM CTARUB RU
  WHERE RUBRO = 11 AND CUENTAS.NUM_CTA = RU.CUENTA), CUENTAS.ESFLUJO)

Saludos :)

Maribel09 28-08-2015 17:40:05

Hola
 
Hola, muchas gracias a todos, revisaré la guía de estilo, la sentencia que me escribió ecfisa, funciona correctamente en Firebird .

Un saludo y que tengan buen día :).


La franja horaria es GMT +2. Ahora son las 10:21:12.

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