Oracle nightmare
Hi all
I have already lost one day around coding and documentation with this
problem, so I'm asking for help with DBD::Oracle.
I'm working around the unicode and BLOB problem. Can someone help me
setting the fooling code running and correctly undling the Unicode
part
use strict;
use warnings;
use v5.10;
use utf8;
use DBD::Oracle qw(ORA_BLOB ORA_CLOB SQLT_CHR SQLT_BIN);
use DBI;
use Data::Dumper;
local $ENV{'ORACLE_HOME'} =3D ( $ENV{'ORACLE_HOME'} ||
'/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/' );
local $ENV{'NLS_LANG'} =3D "AMERICAN_AMERICA.AL32UTF8";
my $dbh =3D DBI->connect(
"DBI:Oracle:host=3DXXX.XXX.XXX.XXX;sid=3DORACLE9;port=3D1522 ",
'test_01',
'test_01',
{
'RaiseError' =3D> 1,
'ShowErrorStatement' =3D> 1,
'AutoCommit' =3D> 1,
'FetchHashKeyName' =3D> 'NAME_lc',
}
);
$dbh->{'LongReadLen'} =3D 1024 * 1024;
eval { $dbh->do( 'DROP TABLE my_table' ) };
$dbh->do( 'CREATE TABLE my_table ( field_1 CLOB, field_2 BLOB )' );
my $nao_str =3D 'n=E3o';
{
my $sth =3D $dbh->prepare( 'INSERT INTO my_table(field_1, field_2)
VALUES (?, ?)' );
$sth->bind_param(1, "$nao_str", { ora_type =3D> SQLT_CHR });
$sth->bind_param(2, "$nao_str", { ora_type =3D> SQLT_BIN });
$sth->execute( );
}
{
my $sth =3D $dbh->prepare(
'SELECT field_1, field_2 FROM my_table',
{ 'ora_pers_lob' =3D> 1 },
);
$sth->execute();
while ( my ( $field_1, $field_2 ) =3D $sth->fetchrow() ) {
say "( $field_1, $field_2 )";
say($nao_str eq $field_2 ? 'ok' : 'nok');
}
}
{
my $sth =3D $dbh->prepare( 'UPDATE my_table SET field_2 =3D ? WHERE
field_2 =3D ?' );
$sth->bind_param(1, 'pippo', { ora_type =3D> SQLT_BIN });
$sth->bind_param(2, $nao_str, { ora_type =3D> SQLT_BIN });
$sth->execute( );
}
{
my $sth =3D $dbh->prepare(
'SELECT field_1, field_2 FROM my_table',
undef
);
$sth->execute();
while ( my ( $field_1, $field_2 ) =3D $sth->fetchrow() ) {
say "( $field_1, $field_2 )";
}
}
Thanks
Marcos Rebelo
--
Marcos Rebelo
http://www.oleber.com/
Milan Perl Mongers leader https://sites.google.com/site/milanperlmongers/
Webmaster of http://perl5notebook.oleber.com
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: Oracle nightmare
On Wed, Apr 06, 2011 at 10:24:37AM +0200, marcos rebelo wrote:
> Hi all
>
> I have already lost one day around coding and documentation with this
> problem, so I'm asking for help with DBD::Oracle.
>
> I'm working around the unicode and BLOB problem. Can someone help me
> setting the fooling code running and correctly undling the Unicode
> part
>
> use strict;
> use warnings;
> use v5.10;
>
> use utf8;
>
> use DBD::Oracle qw(ORA_BLOB ORA_CLOB SQLT_CHR SQLT_BIN);
> use DBI;
> use Data::Dumper;
>
> local $ENV{'ORACLE_HOME'} = ( $ENV{'ORACLE_HOME'} ||
> '/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/' );
> local $ENV{'NLS_LANG'} = "AMERICAN_AMERICA.AL32UTF8";
I don't have Oracle around to test, but I beleieve the problem (or, at
least, a problem) is that these environment variables are being set too
late. Put them in a BEGIN block, move them up to before you use
DBD::Oracle, and lose the local keyword.
Alternatively, get rid of those lines completely, and set up environment
appropriately before invoking perl.
Good luck,
--
Paul Johnson - paul [at] pjcj.net
http://www.pjcj.net
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: Oracle nightmare
The error continues:
DBD::Oracle::db do failed: ORA-00942: table or view does not exist
(DBD ERROR: error possibly near <*> indicator at char 11 in 'DROP
TABLE <*>my_table') [for Statement "DROP TABLE my_table"] at script.pl
line 31.
( n=EF=BF=BDo, n=C3=A3o )
nok
DBD::Oracle::st execute failed: ORA-00932: inconsistent datatypes (DBD
ERROR: error possibly near <*> indicator at char 40 in 'UPDATE
my_table SET field_2 =3D :p1 WHERE <*>field_2 =3D :p2') [for Statement
"UPDATE my_table SET field_2 =3D ? WHERE field_2 =3D ?" with ParamValues:
:p1=3D'pippo', :p2=3D"n=C3=A3o"] at script.pl line 66.
DBD::Oracle::st execute failed: ORA-00932: inconsistent datatypes (DBD
ERROR: error possibly near <*> indicator at char 40 in 'UPDATE
my_table SET field_2 =3D :p1 WHERE <*>field_2 =3D :p2') [for Statement
"UPDATE my_table SET field_2 =3D ? WHERE field_2 =3D ?" with ParamValues:
:p1=3D'pippo', :p2=3D"n=C3=A3o"] at script.pl line 66.
Best Regards
Marcos
On Wed, Apr 6, 2011 at 12:07, Paul Johnson <paul [at] pjcj.net> wrote:
> On Wed, Apr 06, 2011 at 10:24:37AM +0200, marcos rebelo wrote:
>> Hi all
>>
>> I have already lost one day around coding and documentation with this
>> problem, so I'm asking for help with DBD::Oracle.
>>
>> I'm working around the unicode and BLOB problem. Can someone help me
>> setting the fooling code running and correctly undling the Unicode
>> part
>>
>> use strict;
>> use warnings;
>> use v5.10;
>>
>> use utf8;
>>
>> use DBD::Oracle qw(ORA_BLOB ORA_CLOB SQLT_CHR SQLT_BIN);
>> use DBI;
>> use Data::Dumper;
>>
>> local $ENV{'ORACLE_HOME'} =3D ( $ENV{'ORACLE_HOME'} ||
>> '/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/' );
>> local $ENV{'NLS_LANG'} =3D "AMERICAN_AMERICA.AL32UTF8";
>
> I don't have Oracle around to test, but I beleieve the problem (or, at
> least, a problem) is that these environment variables are being set too
> late. =C2=A0Put them in a BEGIN block, move them up to before you use
> DBD::Oracle, and lose the local keyword.
>
> Alternatively, get rid of those lines completely, and set up environment
> appropriately before invoking perl.
>
> Good luck,
>
> --
> Paul Johnson - paul [at] pjcj.net
> http://www.pjcj.net
>
--
Marcos Rebelo
http://www.oleber.com/
Milan Perl Mongers leader https://sites.google.com/site/milanperlmongers/
Webmaster of http://perl5notebook.oleber.com
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
RE: Oracle nightmare
VGhlIERST1AgVGFibGUgaXMgbGlrZWx5IGZhaWxpbmcgYmVjYXVzZSB0aGUg dGFibGUgaGFzIGFs
cmVhZHkgYmVlbiBkcm9wcGVkLg0KDQpPbmUgdGhpbmcgSSBub3RpY2VkIGlz IHRoYXQgeW91IHNl
dCBwMSB0byBwaXBwbyB1c2luZyBzaW5nbGUgcXVvdGVzIGFuZCBwMiB0byBu w6NvIHVzaW5nIGRv
dWJsZSBxdW90ZXMuICBOb3Qgc3VyZSBpZiB0aGF0IHdvdWxkIGJlIHByZXNl cnZlZCB3aGVuIHN3
YXBwaW5nIG91dCB0aGUgcGFyYW1ldGVycywgYnV0IEkgd291bGQgdHJ5IHVz aW5nIHNpbmdsZSBx
dW90ZXMgZm9yIGRlZmluaW5nIGJvdGggcGFyYW1ldGVycy4gIEkgd291bGQg YWxzbyBmaXJzdCB0
cnkgc2VlaW5nIGlmIHRoZSBxdWVyeSB3b3JrZWQgaW4gbm9uLXBhcmFtZXRl cml6ZWQgZm9ybSwg
aS5lLiAiIFVQREFURSBteV90YWJsZSBTRVQgZmllbGRfMiA9ICduw6NvJyBX SEVSRSBmaWVsZF8y
ID0gJ3BpcHBvJyIuIA0KDQpJdCB3b3VsZCBoZWxwIGlmIHdlIGNvdWxkIGxv b2sgYXQgZXhhY3Rs
eSB3aGF0IGxpbmUgNjYgaW4gdGhlIHNjcmlwdCBsb29rcyBsaWtlLg0KDQoN Cg0KLS0tLS1Pcmln
aW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IG1hcmNvcyByZWJlbG8gW21haWx0 bzpvbGViZXJAZ21h
aWwuY29tXSANClNlbnQ6IFdlZG5lc2RheSwgQXByaWwgMDYsIDIwMTEgNjox MiBBTQ0KVG86IFBh
dWwgSm9obnNvbg0KQ2M6IGJlZ2lubmVyc0BwZXJsLm9yZw0KU3ViamVjdDog UmU6IE9yYWNsZSBu
aWdodG1hcmUNCg0KVGhlIGVycm9yIGNvbnRpbnVlczoNCg0KREJEOjpPcmFj bGU6OmRiIGRvIGZh
aWxlZDogT1JBLTAwOTQyOiB0YWJsZSBvciB2aWV3IGRvZXMgbm90IGV4aXN0 DQooREJEIEVSUk9S
OiBlcnJvciBwb3NzaWJseSBuZWFyIDwqPiBpbmRpY2F0b3IgYXQgY2hhciAx MSBpbiAnRFJPUA0K
VEFCTEUgPCo+bXlfdGFibGUnKSBbZm9yIFN0YXRlbWVudCAiRFJPUCBUQUJM RSBteV90YWJsZSJd
IGF0IHNjcmlwdC5wbA0KbGluZSAzMS4NCiggbu+/vW8sIG7Do28gKQ0Kbm9r DQpEQkQ6Ok9yYWNs
ZTo6c3QgZXhlY3V0ZSBmYWlsZWQ6IE9SQS0wMDkzMjogaW5jb25zaXN0ZW50 IGRhdGF0eXBlcyAo
REJEDQpFUlJPUjogZXJyb3IgcG9zc2libHkgbmVhciA8Kj4gaW5kaWNhdG9y IGF0IGNoYXIgNDAg
aW4gJ1VQREFURQ0KbXlfdGFibGUgU0VUIGZpZWxkXzIgPSA6cDEgV0hFUkUg PCo+ZmllbGRfMiA9
IDpwMicpIFtmb3IgU3RhdGVtZW50DQoiVVBEQVRFIG15X3RhYmxlIFNFVCBm aWVsZF8yID0gPyBX
SEVSRSBmaWVsZF8yID0gPyIgd2l0aCBQYXJhbVZhbHVlczoNCjpwMT0ncGlw cG8nLCA6cDI9Im7D
o28iXSBhdCBzY3JpcHQucGwgbGluZSA2Ni4NCkRCRDo6T3JhY2xlOjpzdCBl eGVjdXRlIGZhaWxl
ZDogT1JBLTAwOTMyOiBpbmNvbnNpc3RlbnQgZGF0YXR5cGVzIChEQkQNCkVS Uk9SOiBlcnJvciBw
b3NzaWJseSBuZWFyIDwqPiBpbmRpY2F0b3IgYXQgY2hhciA0MCBpbiAnVVBE QVRFDQpteV90YWJs
ZSBTRVQgZmllbGRfMiA9IDpwMSBXSEVSRSA8Kj5maWVsZF8yID0gOnAyJykg W2ZvciBTdGF0ZW1l
bnQNCiJVUERBVEUgbXlfdGFibGUgU0VUIGZpZWxkXzIgPSA/IFdIRVJFIGZp ZWxkXzIgPSA/IiB3
aXRoIFBhcmFtVmFsdWVzOg0KOnAxPSdwaXBwbycsIDpwMj0ibsOjbyJdIGF0 IHNjcmlwdC5wbCBs
aW5lIDY2Lg0KDQpCZXN0IFJlZ2FyZHMNCk1hcmNvcw0KDQpPbiBXZWQsIEFw ciA2LCAyMDExIGF0
IDEyOjA3LCBQYXVsIEpvaG5zb24gPHBhdWxAcGpjai5uZXQ+IHdyb3RlOg0K PiBPbiBXZWQsIEFw
ciAwNiwgMjAxMSBhdCAxMDoyNDozN0FNICswMjAwLCBtYXJjb3MgcmViZWxv IHdyb3RlOg0KPj4g
SGkgYWxsDQo+Pg0KPj4gSSBoYXZlIGFscmVhZHkgbG9zdCBvbmUgZGF5IGFy b3VuZCBjb2Rpbmcg
YW5kIGRvY3VtZW50YXRpb24gd2l0aCB0aGlzDQo+PiBwcm9ibGVtLCBzbyBJ J20gYXNraW5nIGZv
ciBoZWxwIHdpdGggREJEOjpPcmFjbGUuDQo+Pg0KPj4gSSdtIHdvcmtpbmcg YXJvdW5kIHRoZSB1
bmljb2RlIGFuZCBCTE9CIHByb2JsZW0uIENhbiBzb21lb25lIGhlbHAgbWUN Cj4+IHNldHRpbmcg
dGhlIGZvb2xpbmcgY29kZSBydW5uaW5nIGFuZCBjb3JyZWN0bHkgdW5kbGlu ZyB0aGUgVW5pY29k
ZQ0KPj4gcGFydA0KPj4NCj4+IHVzZSBzdHJpY3Q7DQo+PiB1c2Ugd2Fybmlu Z3M7DQo+PiB1c2Ug
djUuMTA7DQo+Pg0KPj4gdXNlIHV0Zjg7DQo+Pg0KPj4gdXNlIERCRDo6T3Jh Y2xlIHF3KE9SQV9C
TE9CIE9SQV9DTE9CIFNRTFRfQ0hSIFNRTFRfQklOKTsNCj4+IHVzZSBEQkk7 DQo+PiB1c2UgRGF0
YTo6RHVtcGVyOw0KPj4NCj4+IGxvY2FsICRFTlZ7J09SQUNMRV9IT01FJ30g PSAoICRFTlZ7J09S
QUNMRV9IT01FJ30gfHwNCj4+ICcvdXNyL2xpYi9vcmFjbGUveGUvYXBwL29y YWNsZS9wcm9kdWN0
LzEwLjIuMC9zZXJ2ZXIvJyApOw0KPj4gbG9jYWwgJEVOVnsnTkxTX0xBTkcn fSA9ICJBTUVSSUNB
Tl9BTUVSSUNBLkFMMzJVVEY4IjsNCj4NCj4gSSBkb24ndCBoYXZlIE9yYWNs ZSBhcm91bmQgdG8g
dGVzdCwgYnV0IEkgYmVsZWlldmUgdGhlIHByb2JsZW0gKG9yLCBhdA0KPiBs ZWFzdCwgYSBwcm9i
bGVtKSBpcyB0aGF0IHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUg YmVpbmcgc2V0IHRv
bw0KPiBsYXRlLiDCoFB1dCB0aGVtIGluIGEgQkVHSU4gYmxvY2ssIG1vdmUg dGhlbSB1cCB0byBi
ZWZvcmUgeW91IHVzZQ0KPiBEQkQ6Ok9yYWNsZSwgYW5kIGxvc2UgdGhlIGxv Y2FsIGtleXdvcmQu
DQo+DQo+IEFsdGVybmF0aXZlbHksIGdldCByaWQgb2YgdGhvc2UgbGluZXMg Y29tcGxldGVseSwg
YW5kIHNldCB1cCBlbnZpcm9ubWVudA0KPiBhcHByb3ByaWF0ZWx5IGJlZm9y ZSBpbnZva2luZyBw
ZXJsLg0KPg0KPiBHb29kIGx1Y2ssDQo+DQo+IC0tDQo+IFBhdWwgSm9obnNv biAtIHBhdWxAcGpj
ai5uZXQNCj4gaHR0cDovL3d3dy5wamNqLm5ldA0KPg0KDQoNCg0KLS0gDQpN YXJjb3MgUmViZWxv
DQpodHRwOi8vd3d3Lm9sZWJlci5jb20vDQpNaWxhbiBQZXJsIE1vbmdlcnMg bGVhZGVyIGh0dHBz
Oi8vc2l0ZXMuZ29vZ2xlLmNvbS9zaXRlL21pbGFucGVybG1vbmdlcnMvDQpX ZWJtYXN0ZXIgb2Yg
aHR0cDovL3Blcmw1bm90ZWJvb2sub2xlYmVyLmNvbQ0KDQotLSANClRvIHVu c3Vic2NyaWJlLCBl
LW1haWw6IGJlZ2lubmVycy11bnN1YnNjcmliZUBwZXJsLm9yZw0KRm9yIGFk ZGl0aW9uYWwgY29t
bWFuZHMsIGUtbWFpbDogYmVnaW5uZXJzLWhlbHBAcGVybC5vcmcNCmh0dHA6 Ly9sZWFybi5wZXJs
Lm9yZy8NCg0KDQo=