Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: DBI::Shell sqlite dbh->func(

by rodinski (Initiate)
on Oct 13, 2013 at 23:04 UTC ( #1058107=note: print w/ replies, xml ) Need Help??


in reply to Re: DBI::Shell sqlite dbh->func(
in thread DBI::Shell sqlite dbh->func(

This code below seems to work for me.

If I try it without the single quotes within the func declaration, I get a strict subs error

Now how to get DBI::Shell to interact with the user so they have access to this function?

#!/usr/bin/perl -w # create a SQLite test database use strict; use DBI; my $db = shift || 'no_name.splite'; my $dbh = DBI->connect("dbi:SQLite:$db", "","", {RaiseError => 1, sqlite_see_if_its_a_number => 1, PrintError=>0}) or die "can't connect\n"; $dbh->func('sqrt_s_s', -1, 'sqrt_sum_of_sqrs', 'create_function'); #ne +ed length function sub sqrt_sum_of_sqrs { my $sum_sqrs = 0.0; map {$sum_sqrs += $_**2} @_; return sqrt($sum_sqrs); } my $sth; my @rowa = $dbh->selectrow_array("select 3 as A,4 as B, sqrt_s_s(3,4) +as C"); print join ("\t",@rowa) ;


Comment on Re^2: DBI::Shell sqlite dbh->func(
Download Code
Re^3: DBI::Shell sqlite dbh->func(
by Mr. Muskrat (Abbot) on Oct 23, 2013 at 16:24 UTC

    If I try it without the single quotes within the func declaration, I get a strict subs error

    Something like this?

    #!/bin/env perl # create a SQLite test database use strict; use warnings; use DBI; my $db = shift @ARGV || 'no_name.splite'; my $dbh = DBI->connect( "dbi:SQLite:$db", "", "", { RaiseError => 1, sqlite_see_if_its_a_number => 1, PrintError => 0 } ); $dbh->func('sqrt_s_s', -1, \&sqrt_sum_of_sqrs, 'create_function'); # n +eed length function my @rowa = $dbh->selectrow_array( "select 3 as A, 4 as B, sqrt_s_s( 3, + 4 ) as C" ); print join( "\t", @rowa ), "\n"; sub sqrt_sum_of_sqrs { my $sum_sqrs = 0.0; map { $sum_sqrs += $_ ** 2 } @_; return sqrt( $sum_sqrs ); }

    Update: So now you need to research three things.

    1. How would you prompt a user for input?
    2. How to get the user input?
    3. How do you pass the user input into your function?

      My past research peaked my interest in the command line tool dbish. So my answers are as follows.

      >Update: So now you need to research three things.

      >How would you prompt a user for input?

      via dbish (or DBI::Shell interface)

      >How to get the user input?

      via dbish (or DBI::Shell interface)

      >How do you pass the user input into your function?

      I'm thinking that there should already be code that has performed the ->func method.

      I'm hoping to be able to type into the dbish interface something like this:

      select 3 as oposite, 4 as adjacent, sqrt(3,4) as hyp

      and get

      3 4 5

      as a result.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1058107]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2014-07-26 20:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (179 votes), past polls