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)
-   -   que esta mal en este FOR SELECT (https://www.clubdelphi.com/foros/showthread.php?t=48863)

Milperrimo 05-10-2007 20:59:04

que esta mal en este FOR SELECT
 
estoy tratando de copiar un campo de una tabla a otra pero no lo puedo hacer, me marca un error de ke token unknown en VARIABLE, alguien sabe ke diantres esta mal aki??????????????????? no se si estoy declarando bien las variables o ke, o todo esto lo tengo ke tener adentro de un procedure o ke?????

DECLARE VARIABLE ELID INTEGER;
DECLARE VARIABLE ELNOM VARCHAR(20);
FOR SELECT N.IDNOMBRE, N.NOM FROM NOMBRE N, USUARIO U WHERE N.IDNOMBRE = U.IDN
INTO ELID,ELNOM DO
BEGIN
UPDATE USUARIO SET USUARIO = :ELNOM WHERE IDN = :ELID
END
END

maeyanes 05-10-2007 21:10:26

Hola...

Primero que nada... procura usar las etiquetas SQL para mostrar tu código, así es más entendible...

Tu código debería ser:

Código SQL [-]
DECLARE VARIABLE ELID INTEGER;
DECLARE VARIABLE ELNOM VARCHAR(20);

BEGIN  /* Este BEGIN te hace falta */
  FOR
    SELECT N.IDNOMBRE, N.NOM FROM NOMBRE N, USUARIO U WHERE N.IDNOMBRE = U.IDN
    INTO ELID,ELNOM
  DO
  BEGIN
    UPDATE USUARIO SET USUARIO = :ELNOM WHERE IDN = :ELID
  END 
END


Saludos...

jhonny 05-10-2007 21:18:57

Tambien falta un Punto y coma:

Código SQL [-]

DECLARE VARIABLE elid INTEGER;
DECLARE VARIABLE elnom VARCHAR(20);
BEGIN  /* Este BEGIN te hace falta */
  FOR
    SELECT N.IDNOMBRE, N.NOM FROM NOMBRE N, USUARIO U WHERE N.IDNOMBRE = U.IDN
    INTO ELID,ELNOM
  DO
  BEGIN
    UPDATE USUARIO SET USUARIO = :ELNOM WHERE IDN = :ELID; /* Este Punto y coma (;) tambien te hace falta */
  END 
END

Milperrimo 05-10-2007 23:49:32

Saludos, gracias por responder rapido, apenas empiezo aqui en estos foros no me habia dado cuenta de ke habia etiquetas para poner codigo. Pero aun me sigue saliendo error desde la declaracion de la variable, Me sigue poniendo Token unknown VARIABLE desde la primera linea, alguien tiene idea???????

maeyanes 08-10-2007 15:52:21

Hola...

Podrías poner el código completo del procedimiento (Procedure) o disparador (Trigger)?


Saludos...

Milperrimo 08-10-2007 15:54:54

No tengo ninguno, El for select tiene que estar en un procedure o un trigger para que funcione???

maeyanes 08-10-2007 15:59:10

Hola!

Claro!!

Así como el DECLARE VARIABLE...


Saludos...

Milperrimo 08-10-2007 16:00:32

ooooooohhhhhhh, pues alli esta la causa, gracias, voy a probar poniendolo en un sp haber ke tal

jhonny 08-10-2007 16:15:03

Cita:

Empezado por Milperrimo (Mensaje 236890)
ooooooohhhhhhh, pues alli esta la causa, gracias, voy a probar poniendolo en un sp haber ke tal

Ahhh :), ¿Osea que no estabas mentiendo ese script en un procedimiento almacenado, ni en un trigger?, veo que ya encontraste el problema, de todas formas te colocare un ejemplo de como deberia quedar :):

Código SQL [-]
CREATE PROCEDURE Nombre_Del_Procedimiento_Almacenado
as
DECLARE VARIABLE elid INTEGER;
DECLARE VARIABLE elnom VARCHAR(20);
BEGIN  /* Este BEGIN te hace falta */
  FOR
    SELECT N.IDNOMBRE, N.NOM FROM NOMBRE N, USUARIO U WHERE N.IDNOMBRE = U.IDN
    INTO ELID,ELNOM
  DO
  BEGIN
    UPDATE USUARIO SET USUARIO = :ELNOM WHERE IDN = :ELID; /* Este Punto y coma (;) tambien te hace falta */
  END 
END

Milperrimo 08-10-2007 16:29:28

Listoooooooo:):):) por fin funciono esto, gracias colegas, eske estoy sufriendo porke apenas empiezo en firebird, estaba muy acostumbrado al microsoft sqlserver


La franja horaria es GMT +2. Ahora son las 05:22:45.

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