Jason Kohles wrote:
On Dec 28, 2007, at 10:23 AM, Tony Winslow wrote:
Jason Kohles wrote:
Also from DBIx::Class::Manual::Cookbook:
Using database functions or stored procedures
The combination of "select" and "as" can be used to return the
result
of a database function or stored procedure as a column value.
You use
"select" to specify the source for your column value (e.g. a
column
name, function, or stored procedure name).
I'm confused of it. The whole paragraph!
eg: I've a procedure called proc1 which has one output parameter.
So in the MySQL client env. I have to call it sth. like:
CALL proc1(@a);
SELECT @a;
And in programs, I think it is sth. more like this:
execute('CALL proc1(?)');
my $result = get_column(1);
The problem now is I don't know how to do it under the DBIx-Class env.
My Env: Catalyst/TT, DBIx-Class/MySQL
Something like this should work...
package MyDB::Something;
use strict;
use warnings;
use base qw( DBIx::Class );
__PACKAGE__->load_components(qw( Core ));
__PACKAGE__->table( "fake_table_name_for_proc1" );
__PACKAGE__->result_source_instance->name( \'(select * from proc1(?))' );
Then you should be able to do:
my $rs = $schema->resultset( 'Something' )->search( undef, { bind =>
[EMAIL PROTECTED] } );
I'm not a big fan of MySQL though, so I don't know if it has any
special requirements for this stuff...
I tried the way you suggested, yet the following exception was thrown: |"Odd number
of arguments to search"
I think maybe it is caused by the SQL Statement since procedures don't have
return values, and, in fact, in the procedure I wrote the parameter passed into
it is an output parameter.
|
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]