1

perlからストアドプロシージャを実行中にエラーが発生しました。私は問題なくperlからMSSQLサーバーに接続することができます。しかし、次のバインディングパラメータを使用してプロシージャを実行すると、エラーが発生します

[Microsoft] [ODBCSQLServerドライバー][SQLServer]「@id」の近くの構文が正しくありません。(SQL-42000)

この「id」は最初のパラメーターです。手順を見ると大丈夫です。誰かがこのエラーについて何か考えがありますか?

コード

#GetStatusDescription(?, ?, ?) - id - LONG, status - VARCHAR, description - VARCHAR
my $sth = $dbh -> prepare('exec GetStatusDescription(?, ?, ?)');
my $str1, my $str2;
my $intid = 11122;
use DBI qw(:sql_types);
$sth->bind_param(1, $intid, DBI::SQL_INTEGER); 
$sth->bind_param_inout(2, \$str1, DBI::SQL_VARCHAR); 
$sth->bind_param_inout(3, \$str2, DBI::SQL_VARCHAR); 
$sth->execute() or die $dbh -> errstr;
4

1 に答える 1

3

ストアドプロシージャを呼び出す場合、SQLServerではそれらは括弧を使用しません。つまり、次のようにします。

my $sth = $dbh -> prepare('exec GetStatusDescription ?, ?, ?');
于 2013-01-25T23:50:17.393 に答える