The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"DBIX::Class выполнение procedure из MySQL"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Perl)
Изначальное сообщение [ Отслеживать ]

"DBIX::Class выполнение procedure из MySQL"  +/
Сообщение от Azudim email(??) on 10-Июн-11, 18:07 
Подскажите пожалуйста - как справиться с получением результата хранимой в MySQL процедуры
силами DBIX::Class

я описываю ее как виртуальную таблицу схемы:
__PACKAGE__->table('subtreenodes');
__PACKAGE__->result_source_instance->is_virtual(1);
__PACKAGE__->result_source_instance->view_definition(q[
        CALL fetch_subtree_ids(?, ?, ?, ?, ?, ?)
    ]);

потом можно вызывать в каталисте ResultSet передавая параметры через bind:

my @rs = $c->model('DB::Subtreenodes')->search({},
{  
   bind => ['task_types','code','parent_code',1,10,true]
  });

это пример из кук-бука, но сдается мне в MySQL вообще нельзя результаты выполнения процедуры использовать как подзапрос, а DBIX class как раз и генерирует что то типа
SELECT me.code FROM (
                CALL fetch_subtree_ids(?, ?, ?, ?, ?, ?)
        ) me: 'types', 'code', 'parent_code', '1', '10', '0'

сама процедура может возвращать или resultset или писать результат в переменную.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "DBIX::Class выполнение procedure из MySQL"  +/
Сообщение от Феликс Жопорезку on 10-Июн-11, 22:36 
Чё за кукбук ? Я тоже хочу! Где взять ?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "DBIX::Class выполнение procedure из MySQL"  +/
Сообщение от Феликс Жопорезку on 10-Июн-11, 22:39 
Catalyst::Manual::Cookbook ? или кто-то книжку написал ?


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "DBIX::Class выполнение procedure из MySQL"  +/
Сообщение от Azudim email(??) on 11-Июн-11, 17:00 
> Catalyst::Manual::Cookbook ? или кто-то книжку написал ?

  да вроде тот самый =)


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "DBIX::Class выполнение procedure из MySQL"  +/
Сообщение от ACCA (ok) on 11-Июн-11, 15:28 
>  Подскажите пожалуйста - как справиться с получением результата хранимой в MySQL
> процедуры
>  силами DBIX::Class

Есть забавная штука DBIx::ProcedureCall

IMHO ты не туда полез. Рвать гланды ORM через жопу конкретного DBD - это конкретный экстрим. Переформулируй задачу, чтобы отпала надобность в stored procedure. Современный тренд - утаскивать нагрузку с сервера базы данных, а в пределе вообще уходить на NoSQL.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "DBIX::Class выполнение procedure из MySQL"  +/
Сообщение от Azudim email(??) on 11-Июн-11, 16:58 
>>  Подскажите пожалуйста - как справиться с получением результата хранимой в MySQL
>> процедуры
>>  силами DBIX::Class
> Есть забавная штука DBIx::ProcedureCall
> IMHO ты не туда полез. Рвать гланды ORM через жопу конкретного DBD
> - это конкретный экстрим. Переформулируй задачу, чтобы отпала надобность в stored
> procedure. Современный тренд - утаскивать нагрузку с сервера базы данных, а
> в пределе вообще уходить на NoSQL.

Я еще с динамическим программированием не доразобрался, как тут за трендами угнаться =)

По существу: есть готовые процедуры для выборки потомков и предков для вывода дерева из таблицы (code, parent_code). Я понимаю что не везде уместно средствами ORMа решать бытовые задачи, просто не знал всех не/возможностей DBIX::Class  

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "DBIX::Class выполнение procedure из MySQL"  +/
Сообщение от Azudim email(??) on 13-Июн-11, 16:17 
>>  Подскажите пожалуйста - как справиться с получением результата хранимой в MySQL
>> процедуры  
> Есть забавная штука DBIx::ProcedureCall

DBIx::ProcedureCall - нет драйвера для MySQL =(

'While this module's interface is database-independent, only Oracle and PostgreSQL are currently supported.'


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "DBIX::Class выполнение procedure из MySQL"  +/
Сообщение от ACCA (ok) on 16-Июн-11, 18:58 
>>>  Подскажите пожалуйста - как справиться с получением результата хранимой в MySQL
>>> процедуры
>> Есть забавная штука DBIx::ProcedureCall
>  DBIx::ProcedureCall - нет драйвера для MySQL =(

Возьми за образец DBIx::ProcedureCall::PostgreSQL и напиши свой DBIx::ProcedureCall::MySQL. Возможно, что там достаточно сделать s/PostgreSQL/MySQL/g

Напиши тесты, оттестируй и выложи на CPAN.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру