Perl 如何使用DBIx::Class运行普通/任意SQL?

Perl 如何使用DBIx::Class运行普通/任意SQL?,perl,dbix-class,Perl,Dbix Class,我需要使用DBIx::Class运行普通SQL: select proc_name(); 有没有一种方法可以通过DBIx::Class实现这一点 UPD 我知道我可以使用DBI进行不同的连接,然后: $dbh->do( 'select proc_name();' ) 但我需要在同一事务中运行它 UPD 这不包括在内 UPD 对于底层投票者:我知道DBIx::Class不适用于普通SQL。但从一方面来说,有时查询太复杂,无法将其重写为DBIx::Class。从另一方面来说,我们需要DBI

我需要使用DBIx::Class运行普通SQL:

select proc_name();
有没有一种方法可以通过DBIx::Class实现这一点

UPD 我知道我可以使用DBI进行不同的连接,然后:

$dbh->do( 'select proc_name();' )
但我需要在同一事务中运行它

UPD 这不包括在内

UPD 对于底层投票者:我知道DBIx::Class不适用于普通SQL。但从一方面来说,有时查询太复杂,无法将其重写为DBIx::Class。从另一方面来说,我们需要DBIx::Class的功能,这要感谢DBIx Class IRC频道上的mst的帮助

我应该用

UPD

模块建议另一种运行复杂查询的方法,并将行的DBIx::Class::Result对象作为结果

UPD


可能也会很有趣

运行普通sql并获取DBIx::Class功能的另一种方法是使用

这里是Ovid提供的

注意,DBIx::Class::Report被标记为Alpha质量代码。所以我避免使用dbh_do。
  my @stuff = $schema->storage->dbh_do(
    sub {
      my ($storage, $dbh, @cols) = @_;
      my $cols = join(q{, }, @cols);
      $dbh->selectrow_array("SELECT $cols FROM foo");
    },
    @column_list
  );
package MyApp::Schema::Result::Year2000CDs;

use base qw/DBIx::Class::Core/;

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

__PACKAGE__->table('year2000cds');
__PACKAGE__->result_source_instance->is_virtual(1);
__PACKAGE__->result_source_instance->view_definition(
    # PUT HERE YOUR QUERY
    "SELECT cdid, artist, title FROM cd WHERE year ='2000'"
);
__PACKAGE__->add_columns(
  'cdid' => {
    data_type => 'integer',
    is_auto_increment => 1,
  },
  'artist' => {
    data_type => 'integer',
  },
  'title' => {
    data_type => 'varchar',
    size      => 100,
  },
);