@tispoint

Почему выдает ошибку — не могу понять?

CREATE`sp1` DEFINER=`root`@`%` PROCEDURE `sp1`()

CREATE DEFINER=`root`@`%` PROCEDURE `p2`()
    DETERMINISTIC
    COMMENT 'A procedure'
BEGIN 
DECLARE p1 INT;
DECLARE pack_id  INT;
DECLARE pack_ref VARCHAR(10);
DECLARE strdate VARCHAR(50); 
DECLARE strdescription VARCHAR(255);
DECLARE strshortdescription VARCHAR(255);
DECLARE link VARCHAR (255);
DECLARE packname VARCHAR (255);
DECLARE category INT;

SET pack_id=497;
SET pack_ref='гкам2';
SET strdate='2016-04-13 09:00:00';
SET strdescription='Применяемые материалы: корпус ЛДСП, фасад МДВ.<br />Габаритные размеры: В 2172, Ш 2700, Г 530 мм';
SET strshortdescription='<img src="http://proj86.tt/img/cms/kamelia_gost_1_min.jpg" alt="" width="476" height="318" />';
SET link='gostinaya-kameliya-1';
SET packname='Гостиная Камелия 1';
SET category=11;

/* первый */
INSERT INTO `ps_product` (`id_product`,`reference`,`supplier_reference`,`redirect_type`,`id_supplier`,`id_manufacturer`,`id_category_default`,`date_add`,`date_upd`,`id_tax_rules_group`,`indexed`,`active`,`price`)
VALUES (pack_id,pack_ref,pack_ref,'404',0,1,category,strdate,strdate,0,1,1,10000);

/* второй  */ 
INSERT INTO `ps_product_attribute` (`id_product`,`quantity`,`default_on`) VALUES (pack_id,10000,1);

SET p1= SELECT LAST_INSERT_ID() FROM `ps_product_attribute`;

/*  третий */
INSERT INTO `ps_product_lang` (`id_product`,`id_shop`,`id_lang`,`description`,`description_short`,`link_rewrite`,`name`) VALUES (pack_id,1,1,strdescription,strshortdescription,link,packname);

/* 4 */
INSERT INTO `ps_product_shop` (`id_product`,`id_shop`,`id_category_default`,`id_tax_rules_group`,`active`,`redirect_type`,`indexed`,`cache_default_attribute`,`date_add`,`date_upd`) VALUES (pack_id,1,category,0,1,'404',1,p1,strdate,strdate);

/* 5 */
INSERT INTO `ps_specific_price_priority` (`id_product`,`priority`) VALUES (pack_id,'id_shop;id_currency;id_country;id_group');    
END$$

А ошибка такая:
Query : CREATE DEFINER=`root`@`%` PROCEDURE `p2`() DETERMINISTIC COMMENT 'A procedure' BEGIN DECLARE p1 INT; DECLARE pack_id I...

Error Code : 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 'SELECT last_insert_id() FROM `ps_product_attribute`;
/* третий */
INSERT ' at line 27

Усли в другом окне выполнить по отдельности 'SELECT last_insert_id() FROM `ps_product_attribute`; - то выдает ожидаемое значение 2290.
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
t-alexashka
@t-alexashka
Сразу пишу legacy код
Насколько я помню LAST_INSERT_ID() не может быть с FROM
Ответ написан
e_svirsky
@e_svirsky
Web Developer
В скобки нужно взять:
SET p1= (SELECT LAST_INSERT_ID() FROM `ps_product_attribute`);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы