Has anyone used DBI with DBD:

DBC to call stored procedures which return a value? I'm having some difficulty getting the right value back. Here's what I'm doing:
my $sql = "EXEC sp_addSurvey";
$sql .= \
@strName='$survey_name',\
@intFormat=1,\
@strTitle='$survey_name',";
$sql .= "\
@strHeader='$survey_name',\
@strFooter='$footer',\
@strSalutation=' ',";
$sql .= "\
@strRedirect=' ',\
@strUID=' ',\
@intSurID=?,\
@intSuccess=?;";
my $add_stmt = $dbh->prepare($sql);
$add_stmt->bind_param_inout(1, \$surveyid, 1000000);
$add_stmt->bind_param_inout(2, \$success, 1000000);
$ret = $add_stmt->execute;
my
@rows = $add_stmt->fetchrow_array;
print "Return from add: $ret, id = $surveyid, success = $success\n";
And it outputs:
Return from add: 0E0, id = 3, success = 1
I seem to only get the first byte of $surveyid. Looking at the database, the stored procedure works and this value should be 345.
Anybody see what I'm doing wrong? Or know if DBD:

DBC with bind_param_inout actually works? I've tried varying the "size" parameter, as low as 4, and as high as you see it above.
Any help would be greatly appreciated. I've fought with this for 2 days now, and I'm really sick of it. I was hoping to replace a homegrown VB app with this Perl code, but I've just about decided to forget that idea.
Jonathon
Independent Interwoven Contractor