[SP-pm] DBIx::Class + executando funções no SELECT
Renato Santos
renato.cron at gmail.com
Fri Jun 27 13:24:35 PDT 2014
ah!
Funciona tambem se usar arrayref como bind, no lugar do hash.
uso esse codigo aqui em produção, ai fiquei 'curioso'!
'+select' => [
\[
'(SELECT x.period_begin FROM f_extract_period_edge(?,
me.valid_from) x)',
[ plain_value => $options{group_by} ]
]
],
'+as' => ['group_from']
2014-06-27 15:51 GMT-03:00 Andre Carneiro <andregarciacarneiro at gmail.com>:
> 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.cron at 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 <andregarciacarneiro at 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 <andregarciacarneiro at 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 at 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 at 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 at 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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20140627/675945d6/attachment.html>
More information about the SaoPaulo-pm
mailing list