PDA

Ver la Versión Completa : que esta mal en este FOR SELECT


Milperrimo
05-10-2007, 20:59:04
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:


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:



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
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 :):

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