![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
grep2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 14.10.2007 Репутация: нет Всего: нет |
Нужно сделать функцию, которая возвращала бы не значение, а набор записей (одну или больше).
Функцию вызвать из php и получить этот набор от mysql. Надеюсь, mysql 5 такое поддерживает? Как это сделать? Спасибо. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
хранимая функция(cerate function) такого не может делать. только хранимая процедура(create procedure). вот только не знаю, как у PHP с вызовом хранимых процедур...
|
|||
|
||||
grep2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 14.10.2007 Репутация: нет Всего: нет |
а если результат этого набора записей я потом хочу использовать в подзапросе?
типа ткого: select * from users where (поле result из результата выполнения (call sp_my_proc(users.id)) = 1) где call sp_my_proc(users.id) возвращает запись вида: (result, name, message) |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
нет.
не может быть частью DML-запроса. процедура может вызываться либо сама по себе, либо внутри другой процедуры. |
|||
|
||||
grep2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 14.10.2007 Репутация: нет Всего: нет |
Ок, я хочу использовать результат select'а, который возвращает процедура, из другой функции
как мне сделать в коде функции SELECT * INTO var1, var2, var3 FROM (call sp_my_proc(users.id)) Чтобы далее по коду фукнции использовать полученный в переменные результат. Надеюсь, такое возможно? Это сообщение отредактировал(а) grep2 - 28.10.2008, 17:07 |
|||
|
||||
Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 20 Всего: 40 |
Обьясните толком что вам нужно. Задача какая? не "как вернуть рекорсет из функуии" а задача? для чего вам это нужно?
В большинстве случаев необходимость возврата рекордсета обходится временной таблицей с engine=memory. -------------------- Бонифаций. |
|||
|
||||
grep2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 14.10.2007 Репутация: нет Всего: нет |
Есть процедура. Ей передается айди двух объектов и она их сравнивает по заданному алгоритму. Результат сравнения - несколько значений. В настоящий конкретный момент это два значения.
Условно говоря мне нужно выбрать select * from tables, chairs where sp_compare(table_id, chair_id) = (>2, =7) Т.е. число-результат сравнения больше двух, а второе число результат сравнения =7. Это сообщение отредактировал(а) grep2 - 28.10.2008, 19:39 |
|||
|
||||
sir_nuf_nuf |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 8 Всего: 31 |
grep2, ну на MySQL это будет где-то так:
вот. Или еще как вариант:
P.S. есть что-то работает не так как вы этого хотите, это не значит что оно работает не правильно. Никто же не придирается, например, к синтаксису регулярок. |
||||||
|
|||||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
skyboy,
Бонифаций, не знаю зачем вы напугали товарища. Вполне можно использовать результат процедуры в других процедурах и функциях.
|
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 8 Всего: 31 |
smartov, подробнее можно ? покажите код хранимки.
|
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
sir_nuf_nuf, нету у меня кода, уважаемый. Но когда последний раз мне это надо было на проекте - я спокойно использовал. Сейчас я до этого кода не достучусь
|
|||
|
||||
sir_nuf_nuf |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 8 Всего: 31 |
ну это что то..
P.S. Вообще на mysql форуме предлагают создавать временные memory - таблицы.. и например, возвращать их имя. |
||||||||
|
|||||||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |