Новичок
Профиль
Группа: Участник
Сообщений: 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 получить результат выполнения процедуры?
|