【发布时间】:2011-04-07 08:58:43
【问题描述】:
DBD::mysql 是否实现了 bind_param_inout 方法? 我在试用时收到以下错误消息:
DBD::mysql::st bind_param_inout 失败:输出参数不 实现了 [for Statement "调用 spCreateTransactionRecord(?, ?)" 与 参数值:0=Null!, 1=Null!] 在 ./db.pl 第 23 行
我的代码:
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use DBI qw(:sql_types);
use Data::Dumper;
my ($dbh, $dsn, $sth, $sql);
my ($RecID, TypeID);
my ($user, $pass) = '';
# Open DB connection
$dsn = "dbi:mysql:database=mp;mysql_read_default_file=$ENV{HOME}/.my.cnf";
$dbh = DBI->connect($dsn, $user, $pass,
{RaiseError=>1, AutoCommit=>0, ShowErrorStatement=>1})
|| die "DB open error: $DBI::errstr";
# Call stored procedure
$sql = "call spCreateTransactionRecord(?, ?)";
$sth = $dbh->prepare($sql);
$sth->bind_param_inout(2, \$p_RecID, 11, {TYPE=>SQL_INTEGER});
$sth->execute($p_TypeID) || print $sth->errstr;
# Disconnects
$dbh->commit();
$dbh->disconnect;
存储过程声明为:
CREATE PROCEDURE spCreateTransactionRecord (
IN p_TypeID INTEGER,
OUT p_RecID INTEGER
)
【问题讨论】:
-
环境:Ubuntu 10 带有默认的 mysql 安装 (5.1) 和 perl 5.10.1,带有从 CPAN 新安装的模块
标签: mysql perl stored-procedures dbi