|
|
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
Здравствуйте форумчане. Цель из 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) Подскажите, пожалуйста, в чем ошибка. Может как то по хитрому нужно передавать параметр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 21:12:30 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
Причем тут 'Начальник' - не знаю. Но вот беда - в MySQL в принципе нет анонимных процедур, код которой вы нам показываете. И зачем для такой ерунды вообще процедура - непонятно. Делайте в два отдельных вызова - INSERT и Select last_insert_id(). В зависимости от используемого API доступа к MySQL, возможно, в нем уже есть готовый вызов last_insert_id(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 21:39:47 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
miksoft, можно ив один вызов делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 22:21:15 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
MasterZivmiksoft, можно ив один вызов делать.Как? Если речь про Multiple Statement Execution, то вряд ли оно поддерживается в дельфовых компонентах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 22:36:50 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
miksoft, Имелось ввиду, что передав параметр из программы (char`овское значение "Начальник") в процедуру, в таблице "Роли" создастся запись, которая в поле "typer" будет иметь значение "Начальник". roles id typer 1 Администратор 2 Начальник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 02:50:22 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 03:00:28 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. это не процедура, а функция, есть некоторая разница ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 06:48:31 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
iOxYGeN, INSERT INTO `roles` (typer) VALUES (zapros); Вот этот код абсолютно корректен. В таблицу roles в поле typer вставляется значение из zapros. Что лично я бы переделал - так это char на varchar и указал размер - varchar(15), но это к делу не относится. Если при этом выдается сообщение: Unknown column 'Начальник' in field list То вывод однозначен - ошибка не в этой функции, а в другом месте. Смотрите, как именно вы ее вызываете и что делаете перед этим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 09:35:47 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
Разобрался, оказывается "запуская" в программе 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 поле. Так что ли? Я же хотел передать строку, чтобы в функции он вставился как значения для полей. Не получиться так сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 18:14:43 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
iOxYGeN, Один параметр - одно значение. Если нужно передать произвольное число параметров - передавайте одной строкой, а затем разбирайте ее в коде функции. Как вариант - можно нужные значения вставить в специальную табличку, а функция из нее прочитает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 21:52:54 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
"Как вариант" - лучше не делать) могут возникнуть проблемы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 12:59:09 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
harlina66"Как вариант" - лучше не делать) могут возникнуть проблемы)Тут как всегда - зависит от задачи. Бывает и так, что это получается наименее проблемный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 13:06:14 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
Проблема решена, всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2014, 18:55:58 |
|
||
|
Хранимая процедура
|
|||
|---|---|---|---|
|
#18+
On 30.07.2014 23:36, miksoft wrote: > Как? > Если речь про Multiple Statement Execution, О нём. то вряд ли оно > поддерживается в дельфовых компонентах. А что там поддерживать? Там только один набор данных будет. Но и более одного дельфя поддерживает. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2014, 15:18:57 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=167&tid=1834412]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 337ms |

| 0 / 0 |
