Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/03/2011, 08:55
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Hacer script utilizando procedimiento

Uno de los problemas de tu procedimiento es que estás mezclando sintaxis de PHP con MySQL y algo de SQL Server.

- Las variables con "@" no se declaran en MySQL. Son variables de usuario y no locales de procedures. No tienen tipo de dato hasta que se inicalizan y existen manteniendo su valor hasta que la conexión se cierra.
- Los procedimientos se deben crear (CREATE PROCEDURE xxxxx)
- Si tienen más de una sentencia, deben ir entre cláusulas BEGIN/END, las cuales no se pueden anidar.
- Para cargarlos se debe usar una interfaz, o bien hacerlo por consola, pero en cualquier caso deben usarse cambios de delimitador de sentencias para que se cargue como un sólo bloque, a excepción de crearlas por programación de la aplicación.
- Si las columnas son AUTO_INCREMENT, no hace falta poner el valor a ingresar (lo genera MySQL), y ciertamente no se pone de esa forma.
- Los nombres de bases, tablas, columnas, funciones almacenadas, procedimientos almacenados o triggers no van entre apóstrofes sino que pueden ir entre acentos inversos. Esto es obligatorio si contienen caracteres especiales, palabras reservadas o espacios.
- Los valores numéricos asignados a campos numéricos no van entre apóstrofes.
- Las variables usadas no se encierran ente apóstrofes. Se usan tal y como están.
- Las variables locales no deben tener el mismo nombre de las tablas o los campos. Tampoco llevan "@".
- No existe una sintaxis universal para todos los DBMS. MySQL, Postgre, Oracle, DB2 o SQL Server tienen diferentes sintaxis para los procedimientos.

Una sintaxis aproximada de lo que necesitas sería:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE `prueba`()
  3.  
  4.     DECLARE titulo VARCHAR(25);
  5.     DECLARE nacionales INT DEFAULT 0;
  6.  
  7.     SET titulo='testetst';
  8.     SET nacionales='100';
  9.     INSERT INTO products_description (language_id, products_name, products_description, products_url, products_viewed)
  10.     VALUES(3, titulo, 'descripcion ejemplo','url.test.com', 1);
  11.     INSERT INTO products_to_categories(categories_id)
  12.     VALUES(nacionales);
  13. END$$
  14. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)