powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Процедура и добавление кусков кода как параметр
10 сообщений из 10, страница 1 из 1
Процедура и добавление кусков кода как параметр
    #38637218
ванно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как добавить в процедуру именно кусок кода, например AND id = 2
у меня выскакивает ошибка
а если в параметр добавить значение, там где 2 ка сейчас - то работает без проблем
...
Рейтинг: 0 / 0
Процедура и добавление кусков кода как параметр
    #38637219
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ванноПодскажите как добавить в процедуру именно кусок кодаПересоздать ее.
...
Рейтинг: 0 / 0
Процедура и добавление кусков кода как параметр
    #38637227
ванно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я ее пересоздавал сто раз
просто может mysql проверяет запрос на правильность сразу, и не позволяет добавлять куски кода
К примеру у меня кусок процедуры:
Код: plsql
1.
2.
3.
CREATE PROCEDURE proc1 (IN nbr CHAR(50),IN city CHAR(50))
...... AND `m`.`if` Like CONCAT('%',nbr, '%')) city ....
call proc1 ('тест','AND `c`.`id`=1 ');



как видим я хочу вместо параметра city "влупить" кусок кода 'AND `c`.`id`=1 ' и именно в таких случаях возникают ошибки
подскажите как поступить

Опишу свою задачу изначально:
задача по коду думаю ясна, в зависимости от IF (BOOL) выполняется далее тот или иной код (дальше еще будут ветвления if else)
Код: plsql
1.
2.
3.
4.
5.
IF EXISTS (SELECT 1 FROM ......) THEN
BEGIN
    SELECT .......;
END;
END IF;
...
Рейтинг: 0 / 0
Процедура и добавление кусков кода как параметр
    #38637232
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ванно,

Вот когда пересоздаете, вот тогда и подставляйте 'AND `c`.`id`=1 ' вместо city.

ванноможет mysql проверяет запрос на правильность сразуда, именно так.

ванноОпишу свою задачу изначально:
задача по коду думаю ясна, в зависимости от IF (BOOL) выполняется далее тот или иной код (дальше еще будут ветвления if else)
Код: plsql
1.
2.
3.
4.
5.
IF EXISTS (SELECT 1 FROM ......) THEN
BEGIN
    SELECT .......;
END;
END IF;

Существуют такие конструкции, как IF .
...
Рейтинг: 0 / 0
Процедура и добавление кусков кода как параметр
    #38637244
ванно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
спасибо конечно, но мы друг друга не поняли или я не понял ничего :)
мне нужно в параметр процедуры подставить 'AND `c`.`id`=1 '
я полагаю, что такое работать не будет просто так....

Код: plsql
1.
AND `m`.`if` =1 city -- и вот сюда в call proc1 ('AND `c`.`id`=1 ') будет подставляться значение  


в процессе создания процедуры уже выскакиевает ошибка 1064

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

Если нужно изменить только текст SQL-запроса (а не процедурного кода), который вызывается в процедуре, то посмотрите на prepared statements.
...
Рейтинг: 0 / 0
Процедура и добавление кусков кода как параметр
    #38637257
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ванно
Код: plsql
1.
2.
3.
CREATE PROCEDURE proc1 (IN nbr CHAR(50),IN city CHAR(50))
...... AND `m`.`if` Like CONCAT('%',nbr, '%')) city ....
call proc1 ('тест','AND `c`.`id`=1 ');


Вы, действительно, хотите странного . (C)пёрто

Через какое-то время другой человек посмотрит процедуру на предмет расширения функциональности, и не понравится ему алиас С. Заменит он алиас, скажем, на S

Тут-то ваша программа и навернется, причем найти причину будет совсем не просто.
...
Рейтинг: 0 / 0
Процедура и добавление кусков кода как параметр
    #38637261
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
CREATE PROCEDURE proc1 (IN nbr CHAR(50),IN city_id int)
...... AND `m`.`if` Like CONCAT('%',nbr, '%')) AND (city_id=0 or c.id=city_id) ....
call proc1 ('тест',1);
call proc1 ('тест',0);
...
Рейтинг: 0 / 0
Процедура и добавление кусков кода как параметр
    #38637274
ванно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо
вот похожая статья на хабре
Жмяк
а как проще сделать?
при условии что нужно выполнить запросы исходя из результата первого (если первый не дал результат выполнить другой т.д.)
средствами простого mysql на PHP такого не сделать
я выбрал Mysqli, а не PDO, т.к. он быстрее в среднем на 6%
да и процедуры мощный инструмент
...
Рейтинг: 0 / 0
Процедура и добавление кусков кода как параметр
    #38637281
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ванносредствами простого mysql на PHP такого не сделать
я выбрал Mysqli, а не PDO, т.к. он быстрее в среднем на 6%
да и процедуры мощный инструментУж простите, но Вы бы лучше не мифологию и хабр читали, а официальную доку. В т.ч. SQL Syntax for Prepared Statements
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Процедура и добавление кусков кода как параметр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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