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)
-   -   Creacion de un Stored Procedure (https://www.clubdelphi.com/foros/showthread.php?t=76896)

jafera 03-12-2011 14:28:02

Buenas

Como he dicho antes, el SP ya me funciona, hace exactamente lo que quiero, quite el componente y lo puse de nuevo y ya no me da el error de parametros.

Lo que yo decía es que no se como ejecutar la consulta Update que me proponía Marc,

Código SQL [-]
 
UPDATE CU0001 SET 
       LLICENCIA = (SELECT C10 FROM CU0001E WHERE C11 = DNI), 
       NOM =       (SELECT C5  FROM CU0001E WHERE C11 = DNI), 
       COGNOM1 =   (SELECT C6  FROM CU0001E WHERE C11 = DNI), 
       COGNOM2 =   (SELECT C7  FROM CU0001E WHERE C11 = DNI),
       CODIUCI =   (SELECT C13 FROM CU0001E WHERE C11 = DNI)
WHERE EXISTS (SELECT * FROM CU0001E WHERE C11 = DNI)

no se que componente debo usar ni como hacer referencia a las dos tablas para hacer el update, con un select * busco todos los campos pero el update supongo lo debo hacer por parametros, sino no veo la manera. Estoy seguro de que es una solución simple pero no doy con ella, en cuanto le vea el cu.. seguro que digo que es gallina.

En cuanto al velero pues ya sabes, no te lo puedo cambiar por un SP porque yo no soy el dueño y no llego a tanto aunque aun te debería dinero ya que es mas caro un buen SP que funcione bien que un velero.

Saludos

Casimiro Noteví 03-12-2011 16:20:58

Sólo tienes que ejecutarlo con cualquier dataset, pones algo así como:
Código SQL [-]
execute procedure CU0001

guillotmarc 03-12-2011 19:55:07

Bona tarda, Josep.

Cita:

Empezado por jafera (Mensaje 420373)
Buenas

Como he dicho antes, el SP ya me funciona, hace exactamente lo que quiero, quite el componente y lo puse de nuevo y ya no me da el error de parametros.

Lo que yo decía es que no se como ejecutar la consulta Update que me proponía Marc,

Código SQL [-] UPDATE CU0001 SET LLICENCIA = (SELECT C10 FROM CU0001E WHERE C11 = DNI), NOM = (SELECT C5 FROM CU0001E WHERE C11 = DNI), COGNOM1 = (SELECT C6 FROM CU0001E WHERE C11 = DNI), COGNOM2 = (SELECT C7 FROM CU0001E WHERE C11 = DNI), CODIUCI = (SELECT C13 FROM CU0001E WHERE C11 = DNI) WHERE EXISTS (SELECT * FROM CU0001E WHERE C11 = DNI)


no se que componente debo usar ni como hacer referencia a las dos tablas para hacer el update, con un select * busco todos los campos pero el update supongo lo debo hacer por parametros, sino no veo la manera. Estoy seguro de que es una solución simple pero no doy con ella, en cuanto le vea el cu.. seguro que digo que es gallina.

En cuanto al velero pues ya sabes, no te lo puedo cambiar por un SP porque yo no soy el dueño y no llego a tanto aunque aun te debería dinero ya que es mas caro un buen SP que funcione bien que un velero.

Saludos

Para ejecutar esa consulta lo puedes hacer con un objeto IBQuery normal y corriente, como cualquier otra consulta. No te preocupes porqué utilice dos tablas, a eso se le llama subconsultas, es decir consultas dentro de una consulta. Pero el conjunto forma una única consulta.

Lo único que hay que tener en cuenta, es que como toda consulta UPDATE (o INSERT, DELETE, ...) no devuelve ningún resultado, por lo tanto en lugar de ejecutarla con un .Open, la debes ejecutar con un .ExecSQL.

Salut.

jafera 04-12-2011 20:17:27

Hola a todos.

Mil millones de gracias.

Ahora si lo veo claro, como dije ayer cuando le ves el cu.. dices que es gallina; A veces nos ofuscamos con cosas que a la postre son siemples (cuando se tienen por mano jejejeje).

He intentado el execsql y me da error de "column unknow DNI at line 2, column 50" como si no le gustase el = DNI.

Olvido algo?

Gracias por vuestro tiempo, sois unos cracks y unos F1, (help, no coche), de emergencia cojon..o, profesores, confesores, etc.

Que no decaiga nunca el foro.

Saludos

Josep

guillotmarc 04-12-2011 22:30:34

Entonces pruébalo así.

Código SQL [-]
UPDATE CU0001 SET 
       LLICENCIA = (SELECT C10 FROM CU0001E WHERE C11 = CU0001.DNI), 
       NOM =       (SELECT C5  FROM CU0001E WHERE C11 = CU0001.DNI), 
       COGNOM1 =   (SELECT C6  FROM CU0001E WHERE C11 = CU0001.DNI), 
       COGNOM2 =   (SELECT C7  FROM CU0001E WHERE C11 = CU0001.DNI),
       CODIUCI =   (SELECT C13 FROM CU0001E WHERE C11 = CU0001.DNI)
WHERE EXISTS (SELECT * FROM CU0001E WHERE C11 = CU0001.DNI)

Salut.


La franja horaria es GMT +2. Ahora son las 18:18:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi