Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов хранимой процедуры с помощью DBIx::Class 
:(
    Опции темы
Dimtos
Дата 16.5.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 16.5.2010

Репутация: нет
Всего: нет



Из документации на DBIx::Class так и не смог до конца понять каким образом вызывается хранимая процедура.

Есть процедура pr_folder_characteristics:
Код

CREATE DEFINER = 'root'@'%'
PROCEDURE mydb.pr_folder_characteristics(IN `base` INT UNSIGNED)
BEGIN

DECLARE ids MEDIUMTEXT DEFAULT base;
DECLARE parent_ids MEDIUMTEXT DEFAULT base;
DECLARE finish BOOLEAN DEFAULT FALSE;
SET ids = base;
CALL pr_folder_parents( base, true, parent_ids );
SET ids = CONCAT(ids, IF(LENGTH(parent_ids), ',', ''), parent_ids);
IF ids THEN
    SET @stm = CONCAT(
      'SELECT
        `characteristic`.*
      FROM
        `folder_characteristics`, `characteristic`
      WHERE
        `folder_characteristics`.FolderID IN (', ids, ')
      AND
        `characteristic`.ID = `folder_characteristics`.CharacteristicID'
    );
PREPARE fetch_parents FROM @stm;
EXECUTE fetch_parents;
DROP PREPARE fetch_parents;
END IF;

END


Есть модуль:
Код

package Database::Schema::Result::FolderCharacteristic;

# Created by DBIx::Class::Schema::Loader

use strict;
use warnings;

use base 'DBIx::Class::Core';

__PACKAGE__->table_class('DBIx::Class::ResultSource::View');

__PACKAGE__->table('FolderChs');

__PACKAGE__->add_columns(
  "id",
  {
    data_type => "integer",
    extra => { unsigned => 1 },
    is_auto_increment => 1,
    is_nullable => 0,
  },
  "datatype",
  {
    data_type => "enum",
    extra => { list => ["int", "float", "varchar", "text", "datetime", "file"] },
    is_nullable => 0,
  },
  "name",
  { data_type => "varchar", is_nullable => 0, size => 50 },
  "maybenull",
  {
    data_type => "enum",
    default_value => "N",
    extra => { list => ["Y", "N"] },
    is_nullable => 0,
  },
  "ismultiple",
  {
    data_type => "enum",
    default_value => "N",
    extra => { list => ["Y", "N"] },
    is_nullable => 0,
  },
  "isdirectory",
  {
    data_type => "enum",
    default_value => "N",
    extra => { list => ["Y", "N"] },
    is_nullable => 0,
  },
  "directoryid",
  {
    data_type => "integer",
    extra => { unsigned => 1 },
    is_foreign_key => 1,
    is_nullable => 1,
  },
);

__PACKAGE__->set_primary_key("id");

__PACKAGE__->result_source_instance->is_virtual(1);

__PACKAGE__->result_source_instance->view_definition(q[
    CALL pr_folder_characteristics(?)
]);

1;


При выполнении в скрипте
Код

my $folders_characteristics = $schema->resultset( 'FolderCharacteristic' )->search(
    undef,
    {
        bind => [ 2 ]
    }
);

происходит ошибка "DBI Exception: DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CALL pr_folder_characteristics('2')".

При запросе в базу "Call pr_folders_characteristics(2)" выводится ожидаемы результат.
Собсно, вопрос: как с помощью DBIx::Class получить результат выполнения процедуры?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0638 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.