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)
-   -   como realizar actualizacion con exists en firebird (https://www.clubdelphi.com/foros/showthread.php?t=87094)

uper 13-11-2014 18:09:23

como realizar actualizacion con exists en firebird
 
b. dias, estoy realizando una actualizacion con fb 2.5 pero no me deja, me manda error:

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

este es el codigo:
Código PHP:

 if exists (select REG_ from pedido WHERE REG_=and cliente='02135'then
    update pedido set confirmado
=1 WHERE REG_=and cliente='02135'

Tengo el ibexpert, me falta alguna instruccion
gracias.

Casimiro Notevi 13-11-2014 18:26:47

Es que "if exist" no es ninguna sentencia sql, toda sentencia iniciará con un select, update, delete o insert.

duilioisola 13-11-2014 18:37:52

El ejemplo que pones no necesita condicionantes.
Si haces un update a un registro cuyos campos REG_=1 y CLIENTE='012345' y no existe ningún registro con esas condiciones, Firebird no modificará ningún registro.
Yo solo haría el update y dejaría que Firebird modifique un registro o ninguno.

De todos modos, hay casos en los que se puede utilizar:
Código SQL [-]
/* marca el campo EXISTE_TIPO en las cabeceras que tienen detalles con ese tipo */
UPDATE TABLA_CABCERA C
SET C.EXISTE_TIPO=1
WHERE
(EXISTS (SELECT CAMPO FROM TABLA_DETALLE
         WHERE
         ID_CABECERA=C.ID AND 
         TIPO=:PARAMETRO_TIPO)
)

uper 14-11-2014 01:00:19

ok, y que pasa si se trata de realizar una insercion tambien ya que revisando el diseño se necesita realizar una insercion en otra tabla, entonces el exists no es tan valido como los otros SGDB sqlserver x ejemplo, es que es mas manejable.

les agradesco.

Casimiro Notevi 14-11-2014 09:55:05

¿Y eso? ¿cómo lo haces en otros sistemas?

uper 24-11-2014 16:29:56

b. dias a todos, para M$sqlserver casualmente me encuento en inserciones o actualizaciones constantes para ciertas tablas que deben de llenarse de registros para completar ciertos procesos, es decir, les detallo:

tengo una tabla para referenciar los documentos que les daran salida en almacen por ejemplo: salidasAPT campos (sufijo,fecha,docto,tipodoc,fechasalida, statusSalida)
donde el campo tipodoc = F --> factura, R = remision, etc.
statussalida = N (Nuevo) o P (Porcesado)
entonces los documentos se van formando y como se pasen al area de almacen se daran de baja.

La cuestion es que por medio de una aplicacion se hacen estas actualizaciones primero (Insercion o actualizacion) pero si ya esta agregado ya no es necesario volver a agregar pues nos mandaria un error de pk duplicada y por logica pues tendriamos registros duplicados, para este rollo que les comento pues no me quedo mas que hacer lo siguiente:

if exists (select docto from salidasAPTwhere sufijo='02' and docto='REF000012' and tipodoc='R') begin
update salidasapt set statussalida ='N' where sufijo='02' and docto='REF000012' and tipodoc='R'
end else begin
insert into salidasapt values('02','20140514','REF000012','R',null,'N')
end

posteriormente una vez que ya esta el registro almacen lo puede ver los documentos que se le va a dar salida, si existe esta posibilidad de usar el exists en mssql como se puede aplicar con firebrid, es asi como lo hago, pero ahora debo de ocupar algo similar ya que se puede implementar en trigger, o mandar desde una aplicacion el caso seria lo mismo pero con un script es mas facil manejar, por programa tengo que hacer consulta y extraer el resultado para pasar al siguiente, etc.
les agradesco si saben como seria, pues no encuentro algo parecido.
gracias

Casimiro Notevi 24-11-2014 16:44:01

¿Pero eso es una sentencia o un procedimiento almacenado?


Y recuerda poner los tags al código fuente, ejemplo:



Gracias :)


La franja horaria es GMT +2. Ahora son las 12:39:53.

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