Valeu Renato! Infelizmente, a maneira como você passa o bind também não funcionou. Mas a boa notícia é que encontrei a solução, de qualquer forma. Ficou algo assim:
my $row = $c->model('DB::Tabela')->search( undef, { '+select' => [ \['randseq((?)::integer)', 123 ], ] , '+as' => ['randseq'] }, ); O problema depois foi descobrir que o número que estava entrando no parâmetro do randseq estourava o tamanho do integer... Aí descobri que o método last_insert_id já retornava o valor sem eu precisar executar o randseq, diferentemente do DBI 'puro'. Mas ajudou bastante! Obrigado! 2014-06-27 12:59 GMT-03:00 Renato Santos <renato.c...@gmail.com>: > Faça o bind local: > > > my $row = $c->model('DB::Tabela')->search( > undef, > { > '+select' => [ > \['randseq((?)::integer)', { randseq_param => 123 }], > ] , > '+as' => ['randseq'] > }, > )->next; > > # $row->get_column('randseq'); > > > http://search.cpan.org/~ribasushi/SQL-Abstract-1.78/lib/SQL/Abstract.pm#Literal_SQL_with_placeholders_and_bind_values_(subqueries) > > > > > 2014-06-27 12:47 GMT-03:00 Andre Carneiro <andregarciacarne...@gmail.com>: > >> Opa, já descobri! Foi mal! >> >> Era só passar 'bind', assim: >> >> $c->model('DB::Tabela)->search(undef, { >> select => >> ['randseq((?)::integer) ', ] , >> as => >> [qw/randseq/], >> bind => [12345], >> }, ); >> >> O problema agora é que o DBIx::Class me solta o seguinte erro: >> >> schema "me" does not exist [for Statement "SELECT >> me.randseq((?)::integer) FROM Tabela me" with ParamValues: 1='12345'] >> >> >> Aparentemente, DBIx::Class não reconhece o apelido que ele mesmo deu pra >> tabela... :-p >> >> >> Alguma idéia? >> >> >> 2014-06-27 12:38 GMT-03:00 Andre Carneiro <andregarciacarne...@gmail.com> >> : >> >> Boa tarde! >>> >>> Alguém pode me dizer como eu envio as bind variables para uma >>> equivalente a query abaixo no DBIx::Class, por gentileza? >>> >>> >>> SELECT randseq((?)::integer) as randseq FROM Tabela; >>> >>> >>> Minha tentativa no DBIx::Class >>> >>> >>> $c->model('DB::Tabela)->search(undef, { >>> select => >>> ['randseq((?)::integer) as randseq ', ] , >>> }, ); >>> >>> >>> Não consegui descobrir em que lugar da estrutura eu preciso passar as >>> 'bind variables' para o DBIx::Class. Alguém poderia me ajudar, por >>> gentileza? >>> >>> >>> >>> Obrigado! >>> >>> -- >>> André Garcia Carneiro >>> Software Engineer >>> (11)982907780 >>> >> >> >> >> -- >> André Garcia Carneiro >> Software Engineer >> (11)982907780 >> >> =begin disclaimer >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >> SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> >> > > > -- > Saravá, > Renato CRON > http://www.renatocron.com/blog/ > @renato_cron <http://twitter.com/#!/renato_cron> > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > -- André Garcia Carneiro Software Engineer (11)982907780
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer