Thanks for the suggestions so far. Unfortunately I don't have much influence over the corporate AIX/Perl environment, so getting to try latest versions might take some time.

Meanwhile I have used the DBI trace option on a few different code variations:
1. Execute with variable names as parameters
2. Bind each variable then execute
3. Execute with hard coded integer values as parameters
4. Execute with eval{} of integer variables as parameters

The four code snippets and the resulting DBI trace are reproduced below.

my $row_count = $upd_idx1->execute($uuid, $doc_name, $doc_off, $doc_le +n, $comp_off, $comp_len); -> execute for DBD::DB2::st (DBI::st=HASH(0x3036c894)~0x3036c75c ' +68c51749-38a3-4f11-910c-f854c2973ce1' '91FAAA' Math::BigInt=HASH(0x30 +36c4d4) Math::BigInt=HASH(0x3036ca14 ) Math::BigInt=HASH(0x3036c7ec) Math::BigInt=HASH(0x3036c51c)) thr#300 +2ee58 bind :p1 <== '68c51749-38a3-4f11-910c-f854c2973ce1' (attribs: <no attr +ibs>) bind :p1: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=1, S +CALE=0, Maxlen=0, (null) bind :p2 <== '91FAAA' (attribs: <no attribs>) bind :p2: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=12, +SCALE=0, Maxlen=0, (null) bind :p3 <== '0' (attribs: <no attribs>) bind :p3: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p4 <== '17555' (attribs: <no attribs>) bind :p4: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p5 <== '0' (attribs: <no attribs>) bind :p5: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p6 <== '86861' (attribs: <no attribs>) bind :p6: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) !! ERROR: '-99999' '[IBM][CLI Driver] CLI0112E Error in assignmen +t. SQLSTATE=22005' (err#1)
--------------------------------------------------
$upd_idx1->bind_param(1, $uuid) or die "Bind failed f +or UUID: $dbh->errstr"; $upd_idx1->bind_param(2, $doc_name) or die "Bind failed f +or doc_name: $dbh->errstr"; $upd_idx1->bind_param(3, $doc_off, SQL_INTEGER) or die "Bind failed f +or doc_off: $dbh->errstr"; $upd_idx1->bind_param(4, $doc_len, SQL_INTEGER) or die "Bind failed f +or doc_len: $dbh->errstr"; $upd_idx1->bind_param(5, $comp_off, SQL_INTEGER) or die "Bind failed f +or comp_off: $dbh->errstr"; $upd_idx1->bind_param(6, $comp_len, SQL_INTEGER) or die "Bind failed f +or comp_len: $dbh->errstr"; my $row_count = $upd_idx1->execute(); >> bind_param DISPATCH (DBI::st=HASH(0x3036ca5c) rc1/1 @3 g0 ima1 + pid#2338852) -> bind_param for DBD::DB2::st (DBI::st=HASH(0x3036ca5c)~0x3036c92 +4 1 'ad2c80e3-9f6c-43b9-a98a-1a6a8257c67a') thr#3002ee58 bind :p1 <== 'ad2c80e3-9f6c-43b9-a98a-1a6a8257c67a' (attribs: <no attr +ibs>) bind :p1: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=1, S +CALE=0, Maxlen=0, (null) <- bind_param= 1 >> bind_param DISPATCH (DBI::st=HASH(0x3036ca5c) rc1/1 @3 g0 ima1 + pid#2338852) -> bind_param for DBD::DB2::st (DBI::st=HASH(0x3036ca5c)~0x3036c92 +4 2 '91FAAA') thr#3002ee58 bind :p2 <== '91FAAA' (attribs: <no attribs>) bind :p2: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=12, +SCALE=0, Maxlen=0, (null) <- bind_param= 1 >> bind_param DISPATCH (DBI::st=HASH(0x3036ca5c) rc1/1 @4 g0 ima1 + pid#2338852) -> bind_param for DBD::DB2::st (DBI::st=HASH(0x3036ca5c)~0x3036c92 +4 3 Math::BigInt=HASH(0x3036ac98) 4) thr#3002ee58 bind :p3 <== '0' (attribs: <no attribs>) bind :p3: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) <- bind_param= 1 >> bind_param DISPATCH (DBI::st=HASH(0x3036ca5c) rc1/1 @4 g0 ima1 + pid#2338852) -> bind_param for DBD::DB2::st (DBI::st=HASH(0x3036ca5c)~0x3036c92 +4 4 Math::BigInt=HASH(0x3036cad4) 4) thr#3002ee58 bind :p4 <== '17555' (attribs: <no attribs>) bind :p4: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) <- bind_param= 1 >> bind_param DISPATCH (DBI::st=HASH(0x3036ca5c) rc1/1 @4 g0 ima1 + pid#2338852) -> bind_param for DBD::DB2::st (DBI::st=HASH(0x3036ca5c)~0x3036c92 +4 5 Math::BigInt=HASH(0x3036c5ac) 4) thr#3002ee58 bind :p5 <== '0' (attribs: <no attribs>) bind :p5: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) <- bind_param= 1 >> bind_param DISPATCH (DBI::st=HASH(0x3036ca5c) rc1/1 @4 g0 ima1 + pid#2338852) -> bind_param for DBD::DB2::st (DBI::st=HASH(0x3036ca5c)~0x3036c92 +4 6 Math::BigInt=HASH(0x3036c684) 4) thr#3002ee58 bind :p6 <== '86861' (attribs: <no attribs>) bind :p6: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) <- bind_param= 1 >> execute DISPATCH (DBI::st=HASH(0x3036ca5c) rc1/1 @1 g0 ima1 +041 pid#2338852) -> execute for DBD::DB2::st (DBI::st=HASH(0x3036ca5c)~0x3036c924) +thr#3002ee58 !! ERROR: '-99999' '[IBM][CLI Driver] CLI0112E Error in assignmen +t. SQLSTATE=22005' (err#1)
--------------------------------------------------
my $row_count = $upd_idx1->execute($uuid, $doc_name, 0, 17555, 0, 8686 +1); -> execute for DBD::DB2::st (DBI::st=HASH(0x3036c81c)~0x3036c6e4 ' +076de5c1-f082-4994-85fd-132a9a098737' '91FAAA' 0 17555 0 86861) thr#3 +002ee58 bind :p1 <== '076de5c1-f082-4994-85fd-132a9a098737' (attribs: <no attr +ibs>) bind :p1: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=1, S +CALE=0, Maxlen=0, (null) bind :p2 <== '91FAAA' (attribs: <no attribs>) bind :p2: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=12, +SCALE=0, Maxlen=0, (null) bind :p3 <== '0' (attribs: <no attribs>) bind :p3: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p4 <== '17555' (attribs: <no attribs>) bind :p4: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p5 <== '0' (attribs: <no attribs>) bind :p5: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p6 <== '86861' (attribs: <no attribs>) bind :p6: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) <- execute= 1
--------------------------------------------------
my $row_count = $upd_idx1->execute($uuid, $doc_name, eval{$doc_off}, e +val{$doc_len}, eval{$comp_off}, eval{$comp_len}); -> execute for DBD::DB2::st (DBI::st=HASH(0x3036c7ec)~0x3036c6b4 ' +a2b0940e-9120-43b5-bfef-a5986a4e236e' '91FAAA' Math::BigInt=HASH(0x30 +36aa28) Math::BigInt=HASH(0x3036c864 ) Math::BigInt=HASH(0x3036c33c) Math::BigInt=HASH(0x3036c414)) thr#300 +2ee58 bind :p1 <== 'a2b0940e-9120-43b5-bfef-a5986a4e236e' (attribs: <no attr +ibs>) bind :p1: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=1, S +CALE=0, Maxlen=0, (null) bind :p2 <== '91FAAA' (attribs: <no attribs>) bind :p2: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=12, +SCALE=0, Maxlen=0, (null) bind :p3 <== '0' (attribs: <no attribs>) bind :p3: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p4 <== '17555' (attribs: <no attribs>) bind :p4: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p5 <== '0' (attribs: <no attribs>) bind :p5: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) bind :p6 <== '86861' (attribs: <no attribs>) bind :p6: db2_param_type=1, db2_c_type=1, db2_type=0, PRECISION=4, S +CALE=0, Maxlen=0, (null) !! ERROR: '-99999' '[IBM][CLI Driver] CLI0112E Error in assignmen +t. SQLSTATE=22005' (err#1)

As you can see the only variation which "works" is the one with integer values hard coded, which obviously isn't a solution.

This despite the fact that all methods see the trace of
db2_param_type=1, db2_c_type=1, db2_type=0

If anyone can read anything of significance from the trace I would be much obliged.


In reply to Re: DBI Placeholders and DB2 Integers by acka.au
in thread DBI Placeholders and DB2 Integers by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.