[ic] Accessing $Db or $Sql in Jobs?

Ethan Rowe ethan at endpoint.com
Wed Jan 5 21:02:38 EST 2005


Jeff Fearn wrote:

>Hi, how do you make $Db or $Sql accessable to usertags run using the
>jobs functionality?
>
>I have a job which uses a new usertag, however $Db and $Sql are empty.
>
>I have used $Db and $Sql in another usertag; which is used in the
>order routing; without a problem. I am assuming this is something to
>do with this tag being used via the job queue ... this may be a very
>bad assumption :}
>
>I have tried setting "AllowGlobal foundation" in interchange.cfg,
>which I really don't want to do, with no effect.
>
>The job just contains:
>
>[x12_945]
>
>The tag code is:
>UserTag x12_945 Routine <<EOR
>sub
>{
>        # Make sure we have the EDI module installed
>        eval
>        {
>                use X12::Base;
>        };
>
>        if($@)
>        {
>                ::logError("Could not load X12::Base Module. X12-945
>processing failed!\n");
>                return(1);
>        }
>
>        # Both of these always die
>        my $dbh = $Sql{orderline} or die("No SQL orderline database!\n");
>        my $ref = $Db{orderline} or die("No orderline database!\n");
>
>        .....
>}
>
>TIA, Jeff.
>__
>
Having not yet used IC jobs myself, I may be totally useless.  That said:
Is the usertag defined for a single catalog, or as an Interchange global 
tag?

The $Db and $Sql objects aren't available at the global level.  You can 
effectively access the $Db object for a particular table at the global 
level, however, via:
my $dbh = database_exists_ref( $tablename );
$dbh = $dbh->ref();

 From there, $dbh gives you access to functions like query().

I hope this is of some use.
    - Ethan

-- 
Ethan Rowe
End Point Corporation
ethan at endpoint.com



More information about the interchange-users mailing list