Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: select from procedure

Сообщения:  [1-5] 

 
 автор: 703370   (31.10.2006 в 11:37)   письмо автору
 
   для: cheops   (26.10.2006 в 21:16)
 

Согласен, вызов select my_func_name(); действительно запустит
хранимую функцию, но эта функция не сможет вернуть таблицу
которую мы могли бы использовать дальше в запросах или
курсорах
Есть ли вариант получить результирующий рекордсет не
создавая медленных временных таблиц ??? Если нет, то можно
ли давать динамические имена этим временным таблицам (для каждой сессии
например такого рода tmp_table+my_session_id+uuid()) ???

   
 
 автор: cheops   (26.10.2006 в 21:16)   письмо автору
 
   для: 703370   (26.10.2006 в 17:33)
 

Для вызова в запросе необходимо создавать хранимую функцию (function вместо procedure), хранимая процедура в MySQL вызывается при помощи ключевого слова CALL.

   
 
 автор: 703370   (26.10.2006 в 17:33)   письмо автору
 
   для: cheops   (25.10.2006 в 22:31)
 

хорошо, наверно я не неправильно поставил вопрос:

- мы имеем хранимую процедуру (любую)
- для ее вызова внутри хранимой процедуры или функции (в функции возможно только
при условии если не возвращается рекордсет) мы пишем call имя_процедуры:

но при таком раскладе мы не можем получить рекордсет (как в MSSQL) для
дальнейшей работы с ним и тем более не можем использовать в курсорах

описанный выше синтаксис из первоисточника как бы позволяет обходить эти
ограничения, но по факту он не работает либо я его неправильно использую его

и может вы знаете почему этот синтаксис не работает и использовал
ли я его правильно ???

   
 
 автор: cheops   (25.10.2006 в 22:31)   письмо автору
 
   для: 703370   (25.10.2006 в 19:51)
 

Здесь более целесообразно использовать вложенные запросы
select * from (select * from test);

на худой конец представления (view).

   
 
 автор: 703370   (25.10.2006 в 19:51)   письмо автору
 
 

есть стандарт по синтаксису select (вот его часть):

SELECT ...
[FROM table_references
[PROCEDURE procedure_name(argument_list)]]

но почему не работает следующая конструкция:
select * from procedure sp_test();

P.S. процедура такая
CREATE PROCEDURE `sp_test`()
BEGIN
select * from test;
END

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования