Thanks for your input guys.

I removed both "use:DBD::Oralce" and "use"DBD:DB2" lines and now getting
following error:

Can't locate object method "connect" via package "DBI" (perhaps you
forgot to lo
ad "DBI"?) at tmp1.plx line 58.

Any suggestion?

Thanks again,
Hetal.

-----Original Message-----
From: Alexander Foken [mailto:[EMAIL PROTECTED] 
Sent: Sunday, February 26, 2006 1:16 AM
To: [email protected]
Cc: Hetal Soni
Subject: Re: A common perl script for different database platforms

Right. And to explain why this does not work:

Perl handles "use" at compile time, not at runtime. "use WhatEver" is
roughly equivalent to "BEGIN { require WhatEver; WhatEver->import() if 
WhatEver->can('import'); }", so you always use both DBD::Oracle and
DBD::DB2, no matter what $opt_p contains.

If you want to load a module at runtime, use require.
If you want to load a DBI driver (DBD::*) at runtime, let DBI handle it.

Alexander

Tyler MacDonald wrote:

>Hetal Soni <[EMAIL PROTECTED]> wrote:
>  
>
>>Below is code lines to use library for Oracle or DB2:
>> 
>>if ($opt_p eq "O") {
>>$DBType = "Oracle";
>>use DBD::Oracle;
>>};
>>
>>if ($opt_p eq "D") {
>>$DBType = "DB2";
>> use DBD::DB2;
>>};
>>
>>If I comment "use DBD::DB2;" line out and then compile it it works
fine.
>>    
>>
>
>       You don't have to "use" a DBD:: driver to connect to it; when
you
>call DBI's "connect" method, it will do that for you. Try removing both
>"use" lines above and see if that solves it.
>
>       Cheers,
>               Tyler
>  
>


-- 
Alexander Foken
mailto:[EMAIL PROTECTED]  http://www.foken.de/alexander/



NOTICE: This email message is for the sole use of the intended recipient(s) and 
may contain confidential and privileged information. Any unauthorized review, 
use, disclosure or distribution is strictly prohibited. If you are not the 
intended recipient, please contact the sender by reply email and destroy all 
copies and attachments of the original message.

Reply via email to