powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранимая процедура
14 сообщений из 14, страница 1 из 1
Хранимая процедура
    #38709511
iOxYGeN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте форумчане.
Цель из Delphi XE отправить запрос на инсерт и получить ид вставленной записи.
Цель - необходимо передать параметр - строку с значением, например "Начальник" и отработать процедуру на сервере.
Запускаю эту фу-цию, и только при вводе цифры процедура отрабатывается, и говорит мне last_insert_id.
Если же ввести символ в строку с параметром выскакивает ошибка Unknown column 'Начальник' in field list

Создаю хранимую процедуру на MySQL.

BEGIN
DECLARE id INTEGER(5) DEFAULT 0;

INSERT INTO `roles` (typer) VALUES (zapros);

SET id=(Select last_insert_id());
RETURN id;
END

Настройки функции:
Parameter: `zapros` char
Return type: int(5)

Подскажите, пожалуйста, в чем ошибка. Может как то по хитрому нужно передавать параметр?
...
Рейтинг: 0 / 0
Хранимая процедура
    #38709528
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем тут 'Начальник' - не знаю. Но вот беда - в MySQL в принципе нет анонимных процедур, код которой вы нам показываете.

И зачем для такой ерунды вообще процедура - непонятно.
Делайте в два отдельных вызова - INSERT и Select last_insert_id(). В зависимости от используемого API доступа к MySQL, возможно, в нем уже есть готовый вызов last_insert_id().
...
Рейтинг: 0 / 0
Хранимая процедура
    #38709546
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

можно ив один вызов делать.
...
Рейтинг: 0 / 0
Хранимая процедура
    #38709551
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivmiksoft,

можно ив один вызов делать.Как?
Если речь про Multiple Statement Execution, то вряд ли оно поддерживается в дельфовых компонентах.
...
Рейтинг: 0 / 0
Хранимая процедура
    #38709619
iOxYGeN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
Имелось ввиду, что передав параметр из программы (char`овское значение "Начальник") в процедуру, в таблице "Роли" создастся запись, которая в поле "typer" будет иметь значение "Начальник".

roles
id typer
1 Администратор
2 Начальник
...
Рейтинг: 0 / 0
Хранимая процедура
    #38709621
iOxYGeN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
Сама процедура уже создана, как параметр передавать в неё тоже знаю)) вопрос почему не получается получить результат после передачи в неё параметра с топом char в INSERT INTO

Вот описание её(Для её создания использовал NaviCat)

CREATE DEFINER = `PAVEL`@`%` FUNCTION `NewProc`(`zapros` char)
RETURNS int(5)
BEGIN
DECLARE id INTEGER(5) DEFAULT 0;
INSERT INTO `roles` (typer) VALUES (zapros);

SET id=(Select last_insert_id());
RETURN id;
END;
...
Рейтинг: 0 / 0
Хранимая процедура
    #38709638
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE DEFINER = `PAVEL`@`%` FUNCTION `NewProc`(`zapros` char)
RETURNS int(5)
BEGIN
DECLARE id INTEGER(5) DEFAULT 0;
INSERT INTO `roles` (typer) VALUES (zapros);

SET id=(Select last_insert_id());
RETURN id;
END; 



это не процедура, а функция, есть некоторая разница
...
Рейтинг: 0 / 0
Хранимая процедура
    #38709702
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOxYGeN,

INSERT INTO `roles` (typer) VALUES (zapros);

Вот этот код абсолютно корректен. В таблицу roles в поле typer вставляется значение из zapros. Что лично я бы переделал - так это char на varchar и указал размер - varchar(15), но это к делу не относится.

Если при этом выдается сообщение:

Unknown column 'Начальник' in field list

То вывод однозначен - ошибка не в этой функции, а в другом месте. Смотрите, как именно вы ее вызываете и что делаете перед этим.
...
Рейтинг: 0 / 0
Хранимая процедура
    #38710302
iOxYGeN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, оказывается "запуская" в программе NaviCat фунцкию нужно было передавать параметр в одинарных кавычках 'Начальник'.
Теперь появилась другая проблема. Делая необходимый insert:
INSERT INTO models(status_model,refit,type_model_id,sn_model,supplier_id,warranty,date_reg,subtype_id) Values (zapros); //<-строка в ф-ции вместо прошлой с добавлением 1-ой записи.
Пытаюсь передать параметр(создал запрос в NaviCat(есть возможность создать query)):
GET_ID('2,0,25, '', 1, '2015-07-31', '2014-07-31', 262')
GET_ID - название функции. Такое ощущение что через 1 параметр(zapros) можно передать параметр только в 1 поле. Так что ли?
Я же хотел передать строку, чтобы в функции он вставился как значения для полей. Не получиться так сделать?
...
Рейтинг: 0 / 0
Хранимая процедура
    #38710394
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOxYGeN,

Один параметр - одно значение. Если нужно передать произвольное число параметров - передавайте одной строкой, а затем разбирайте ее в коде функции.
Как вариант - можно нужные значения вставить в специальную табличку, а функция из нее прочитает.
...
Рейтинг: 0 / 0
Хранимая процедура
    #38710742
harlina66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Как вариант" - лучше не делать) могут возникнуть проблемы)
...
Рейтинг: 0 / 0
Хранимая процедура
    #38710756
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
harlina66"Как вариант" - лучше не делать) могут возникнуть проблемы)Тут как всегда - зависит от задачи. Бывает и так, что это получается наименее проблемный вариант.
...
Рейтинг: 0 / 0
Хранимая процедура
    #38711673
iOxYGeN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решена, всем спасибо!
...
Рейтинг: 0 / 0
Хранимая процедура
    #38712223
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 30.07.2014 23:36, miksoft wrote:

> Как?
> Если речь про Multiple Statement Execution,

О нём.

то вряд ли оно
> поддерживается в дельфовых компонентах.

А что там поддерживать?
Там только один набор данных будет.
Но и более одного дельфя поддерживает.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранимая процедура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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