powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблема с присваиванием переменной значения
12 сообщений из 12, страница 1 из 1
Проблема с присваиванием переменной значения
    #38608938
bnoazx005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Требуется написать хранимую процедуру для создания записей в 2 таблицах. Сначала я заношу запись в одну таблицу, а затем пытаюсь сохранить значение, сгенерированное для первичного ключа, в переменную, чтобы потом использовать его для создания второй записи в другой таблице. Делаю так, как описанно в книжках, но не получается создать процедуру из-за ошибки. Ниже прилагаю код. Таблицы для начала создал простые, чтобы понять принцип
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE TABLE tbl2 
(
    id_note INT(11) NOT NULL AUTO_INCREMENT,
    note TINYTEXT NULL,
    PRIMARY KEY(id_note)
)ENGINE = InnoDB;

CREATE TABLE tbl1
(
    id INT(11) NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    id_note INT(11) NOT NULL,
    PRIMARY KEY(id),
    FOREIGN KEY(id_note) REFERENCES tbl2(id_note)
        ON DELETE CASCADE
        ON UPDARE CASCADE
)ENGINE = InnoDB;

DELIMITER //

CREATE PROCEDURE add (name VARCHAR(30), note TINYTEXT)
BEGIN
    INSERT IGNORE INTO tbl2 VALUES(NULL,note);
    DECLARE last_id INT(11);
    SELECT LAST_INSERT_ID() INTO last_id;
    INSERT IGNORE INTO tbl1 VALUES(NULL,name,last_id);
END
//
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38608943
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы хоть доку почитали...
http://dev.mysql.com/doc/refman/5.5/en/declare.html DECLARE is permitted only inside a BEGIN ... END compound statement and must be at its start, before any other statements.
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38608952
bnoazx005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftВы бы хоть доку почитали...
http://dev.mysql.com/doc/refman/5.5/en/declare.html DECLARE is permitted only inside a BEGIN ... END compound statement and must be at its start, before any other statements.
Спасибо, теперь все работает. Кстати, документацию действительно не посмотрел, изучаю MySQL по учебнику Кузнецова, Симдянова: там про эту особенность оператора DECLARE вроде как вообще не сказано.
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38608958
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bnoazx005,

На мой взгляд, MySQL вообще не нуждается в учебниках, у него вполне приличная документация. Правда, на английском.
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38608964
bnoazx005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Английский не помеха, так как большинство статей по программированию читаю именно на нем, просто в этот раз как-то забыл про документацию.
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38609624
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bnoazx005,

и раз уж учитесь, то
Код: sql
1.
2.
3.
4.
5.
--не кошерно
SELECT LAST_INSERT_ID() INTO last_id;

--кошерно
set last_id = LAST_INSERT_ID();
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38676536
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftbnoazx005,

На мой взгляд, MySQL вообще не нуждается в учебниках, у него вполне приличная документация. Правда, на английском.
Только один маленький нюанс - часто не работает по писанному!
При ошибках дается ссылка на код ошибки, а расшифровки ошибки нет.
Вот, например, ссылка на ошибку #1064
И что можно из этого понять?
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38676543
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начинаем поиск решения
Это не работает!
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38676544
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Официальный документ! Не работает!
На всякий случай:
Версия сервера: 5.1.63-log
Версия MySQL-клиента: 5.1.57
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38676554
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Установил MySQL Administrator локально.
Cоздал хранимую процедуру на сервере согласно описанию.
Вывод - проблемы были вызваны "кривизной" phpMyAdmin!
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38676555
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

Обратите внимание в каком разделе находится эта страница доки. И где вы пытаетесь это применять? Показывайте код полностью, а отдельная строчка с declare и не должна работать.
...
Рейтинг: 0 / 0
Проблема с присваиванием переменной значения
    #38676588
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, спасибо!
Я уже разобрался.
Через phpMyAdmin не получается создать процедуру через CREATE.
Почему - уже не важно.
Главное,что найден способ.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблема с присваиванием переменной значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]