Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error en simple Sintaxis MySQL

Estas en el tema de Error en simple Sintaxis MySQL en el foro de Mysql en Foros del Web. Buenas con todos, quisiera saber si me pueden dar una simple ayuda, tengo un codigo en mySQL y no me funciona la instruccion, lo que ...
  #1 (permalink)  
Antiguo 05/07/2010, 01:00
(Desactivado)
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 17 años, 5 meses
Puntos: 0
Exclamación Error en simple Sintaxis MySQL

Buenas con todos, quisiera saber si me pueden dar una simple ayuda, tengo un codigo en mySQL y no me funciona la instruccion, lo que quisiera hacer es lo siguiente, actualizar valores de un registro cuando se de una condicion especifica, necesito asignar valores a unas variables y luego con ellos obtener un dato para sumar y luego hacer la actualizacion, ojala puedan ayudarme:

Codigo:

DECLARE @name VARCHAR(255)
DECLARE @item_id INT(10)
DECLARE @quantity INT(10)
DECLARE @suma INT(10)
SET @name = 'nuevo nombre'
SET @item_id = 217
SET @quantity = 300
#contabilizo cuantos registros existen, en caso exista uno se da la condicion
@cont = SELECT count(*) FROM phppos_items WHERE item_id = @item_id
IF @cont <> 0 THEN
#obtengo la cantidad actual y luego la sumo con la nueva
@val1 = SELECT quantity FROM phppos_items WHERE item_id = @item_id
SET @suma = @val1 + @quantity
UPDATE phppos_items SET name=@name, quantity=@suma WHERE item_id=@item_id
END IF

La idea es q corra el codigo en el phpMyAdmin para q ejecute la orden pero me bota el error:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @item_id = 217, SET @quantity = 300, @cont = SELECT count(*) FROM phppos_i' at line 2

Desde ya gracias por la ayuda
  #2 (permalink)  
Antiguo 05/07/2010, 05:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Error en simple Sintaxis MySQL

Yo veo al menos cuatro problemas:
1. Este código tiene aplicación sólo en un script o bien en un stored procedure.
2. No tiene los delimitadores de sentencias, por lo que MySQL entremezclará todas generando errores de sintaxis.
3. Las variables con prefijo "@" no se declaran, se invocan, se inicializan y se deben limpiar una vez usadas, porque no son variables locales sino de usuario.
4. Esta forma es incorrecta:
Código MySQL:
Ver original
  1. @val1 = SELECT quantity FROM phppos_items WHERE item_id = @item_id
O la usas así:
Código MySQL:
Ver original
  1. SELECT quantity INTO @val1 FROM phppos_items WHERE item_id = @item_id;
o la usas así:
Código MySQL:
Ver original
  1. SET @val1 = (SELECT quantity FROM phppos_items WHERE item_id = @item_id);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 05/07/2010, 12:33
(Desactivado)
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Error en simple Sintaxis MySQL

gnzsoloyo, gracias por tu respuesta, ya veo loq mencionas respecto al codigo, masomenos me podrias ilustrar una idea de como puedo correr una instruccion similar en el phpMyadmin de tal manera q haga lo q el codigo en idea refiere?, q tendria q modificar para q pueda ser reconocido, lo podria correr directamente como un SP?, mi idea de hacer esto va de generar ese contenido de mi BD Central, exportarlo en un txt, para q de una aplicacion cliente en otra ciudad pueda ser abierto en un TextArea y mediante php pueda ejecutarse las modificaciones respectivas, en este codigo me bota error en el IF =S.

SET @name = 'nuevo nombre';
SET @item_id = 217;
SET @quantity = 300;
#contabilizo cuantos registros existen, en caso exista uno se da la condicion
SELECT count(*) INTO @cont FROM phppos_items WHERE item_id = @item_id;
IF @cont <> 0 THEN
#obtengo la cantidad actual y luego la sumo con la nueva
SELECT quantity INTO @val FROM phppos_items WHERE item_id = @item_id;
SET @suma = @val1 + @quantity;
UPDATE phppos_items SET name=@name, quantity=@suma WHERE item_id=@item_id;
END IF;

Gracias nuevamente por tu respuesta.

Última edición por dasaoqui; 05/07/2010 a las 12:48
  #4 (permalink)  
Antiguo 06/07/2010, 22:23
(Desactivado)
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Error en simple Sintaxis MySQL

Comentare lo q hice, bueno no es la mejor de las salidas pero no me quedo de otra, lo que simplemente he hecho es que se ejecute un UPDATE y un INSERT a la vez, por descarte se operara con uno de ellos, en caso este el registro en la BD procedera a actualizarla y no insertara ya que esta validada la tabla para q no se dupliquen ciertos campos, lo mismo es para cuando quiera insertar, no actualizara pq no hay el registro pero si insertara, tengo 2 campos unicos, la clave primaria y el codigo generado particular para cada uno, bueno con ello me saco de apuros para ser una aplicacion de emergencia, bueno saludos a todos

Etiquetas: simple, sintaxis
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:00.