Ver Mensaje Individual
  #13 (permalink)  
Antiguo 07/12/2012, 09:44
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: Asignar valor a variable dentro de if

Por favor, usa las etiquetas que encuentras en el combo Highlight. Están allí para hacer que los códigos sean más claros y legibles.

Respecto al código en sí, en ocasiones anteriores es un modo de hacerlo que he utilizado son problemas.
No estoy seguro de por qué no funciona ahora, pero puede ser por la evolución de las versiones de MySQL.
Entonces, vamos a lo simple...

Tres tips previos:
1) Trata de escribir los códigos de forma estructurada. Facilita la lectura y la búsqueda de errores, sean de sintaxis, de logica o procedimentales.
2) No uses variables de sesión a menos que sea estrictamente necesario. En un SP es preferible usar variables locales, y si el SP tiene que devolver datos, es mejor que los devuelva por parámetro, y no en variables de sesión.
3) No me estás diciendo con qué estás cargando este script. No es lo mismo usar MySQL Workbench, que phpMyadmin, Navicat, o la consola de MySQL. Dime qué usas.

Probemos con esto:
Código MySQL:
Ver original
  1. CREATE PROCEDURE sp_InsertCustomer (
  2.     IN Firstname VARCHAR(100),
  3.     IN Lastname VARCHAR(100),
  4.     IN Email VARCHAR(100),
  5.     IN Birthday DateTime,
  6.    
  7.     IN Company varchar(100),
  8.     IN Address1 varchar(100),
  9.     IN Postcode INT,
  10.     IN City varchar(100),
  11.     IN Phone INT
  12.     )
  13.     DECLARE regs        INT;
  14.     DECLARE ExistUser   INT;
  15.     DECLARE Customer_ID INT;
  16.     SET regs = 0;
  17.     SELECT COUNT(*) INTO regs
  18.     FROM `ps_customer`
  19.     WHERE id_customer = 3;
  20.  
  21.     IF regs > 0 THEN
  22.         SET ExistsUser = 1;
  23.     END IF;
  24.  
  25.     IF ExistsUser = 1 THEN
  26.         INSERT INTO  `ps_customer`
  27.             (id_default_group,id_risk,firstname,lastname,email, passwd,birthday, newsletter_date_add,max_payment_days,secure_key,ac tive,date_add,date_upd)
  28.         VALUES(
  29. 3, 0, Firstname, Lastname, Email, '12345',
  30.             Birthday,'0000-00-00 00:00:00',
  31.             0, '2293b4751c4ff4517bb997eb9c141a76', 1, CURRENT_TIMESTAMP(),
  32.             CURRENT_TIMESTAMP()
  33.             );
  34.  
  35.         SET Customer_ID = LAST_INSERT_ID();
  36.         IF Customer_ID > 0 THEN
  37.             INSERT INTO  `ps_customer_group` (id_customer, id_group)
  38.                 VALUES(Customer_ID, 3);
  39.             INSERT INTO  `ps_guest`(id_operating_system, id_web_browser, id_customer, screen_resolution_x, screen_resolution_y,
  40.  screen_color, sun_java, adobe_flash, adobe_director, apple_quicktime, real_player, windows_media, accept_language)
  41.                 VALUES(3, 10, Customer_ID, 0, 0, 0, 0, 0, 0, 0, 0, 0,'');
  42.             INSERT INTO  `ps_address`(id_country, id_state, id_customer, id_manufacturer, id _supplier, id_warehouse, alias, company, lastname, firstname, address1,
  43.  postcode, city, phone, vat_number, dni, date_add, date_upd, active, deleted)
  44.                 VALUES(145, 67, Customer_ID, 0, 0, 0, 'Business', Company, Lastname, Firstname, Address1, Postcode, City, Phone, '','' , CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP(), 1, 0);
  45.         END IF;
  46.     END IF;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)