![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Есть процедура, находящаяся в скрипте создания БД.
Используя MySql Query Browser скрипт выполняется замечательно, включая данную процедуру...
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`ins_page` $$
CREATE PROCEDURE `test`.`ins_page` (
IN m_e_id INT,
IN name VARCHAR(30),
IN m_poz INT UNSIGNED,
IN m_vis BOOL,
IN s_title VARCHAR(300),
IN s_text TEXT,
IN s_poz INT UNSIGNED,
IN s_vis BOOL
)
BEGIN
DECLARE EXIT HANDLER FOR SQLWARNING, NOT FOUND, SQLEXCEPTION ROLLBACK;
START TRANSACTION;
INSERT INTO `entity_description` (e_id, name, pozition, visible) VALUES (m_e_id, name, m_poz, m_vis);
INSERT INTO `pages` (e_id, d_id, title, textHTMl, published, pozition, visible)
VALUES (m_e_id, LAST_INSERT_ID(), s_title, s_text, NOW(), s_poz, s_vis);
COMMIT;
END $$но попытался перетащить всё это дело на хост..., открыл phpMyadmin-а импортировал скрипт - тут и ошибка...говорит ошибка в синтаксисе...(
поставил админа у себя на машине.. тож самое..упорно не хотит создавать процедуру...
подскажите как с этим бороться?
зарание благодарен.
Неактивен

phpMyAdmin пытается выполнить все команды как одну, из-за этого
происходит ошибка. Вы можете выполнять их поочередно (реально
из всего этого списка смысл несет только CREATE PROCEDURE ... END).
Можете попробовать записать весь сценарий в файл и "выполнить
сценарий" в phpMyAdmin.
Неактивен
CREATE PROCEDURE add_order_cast(order_id$ int, menu_id$ int, reg_id$ int, quant$ int)
BEGIN
DECLARE menu_price$ int;
SELECT price*quant$ into menu_price FROM menu_price where menu_id = menu_id$ and reg_id = reg_id$;
INSERT INTO order_cast(order_id, menu_id, quant, cost) values (order_id$, menu_id$, quant$, menu_price$);
END;
Что не так?
Неактивен

SELECT price*quant$ into menu_price FROM menu_price where menu_id = menu_id$ and reg_id = reg_id$;
menu_price незадекларированная переменная. Строкой выше у вас определена переменная menu_price$.
P.S. Не забывайте писать сообщение об ошибке.
Неактивен
не помогло ))))
SQL-запрос:
CREATE PROCEDURE add_order_cast( order_id$ int, menu_id$ int, reg_id$ int, quant$ int ) BEGIN DECLARE menu_price$ int;
Ответ MySQL:
#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 '' at line 3
Неактивен

Неактивен
SQL-запрос:
delimiter $$ CREATE PROCEDURE add_order_cast( order_id$ INT, menu_id$ INT, reg_id$ INT, quant$ INT ) BEGIN DECLARE menu_price$ INT;
Ответ MySQL:
#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 'delimiter $$
CREATE PROCEDURE add_order_cast(order_id$ INT, menu_id$ INT, reg_i' at line 1
Скажите, а в версии 2.8.1 вообще можно сохранять процедуры?
Неактивен

Процедуры доступны с пятой версии MySQL.
Под 2.8.1. полагаю вы подразумевали phpMyAdmin. Про него ничего хорошего сказать не могу. Попробуйте MySQL GUI Tools
Неактивен