2013-01-25 2 views
1

perl에서 저장 프로 시저를 실행하는 동안 오류가 발생합니다. 난 아무 문제없이 펄에서 MS SQL 서버에 연결할 수 있어요. 그러나 다음 바인딩 매개 변수를 사용하여 프로 시저를 실행하면 오류가 발생합니다.Perl에서 MS SQL Server 저장 프로 시저에 대한 바인딩 매개 변수와 관련된 문제 DBI

[Microsoft] [ODBC SQL Server 드라이버] [SQL 서버] '@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; 

답변

3

저장 프로 시저를 호출하는 경우, 사람들은 SQL 서버에 괄호를하지 않습니다. 즉, 당신이 원하는 :

my $sth = $dbh -> prepare('exec GetStatusDescription ?, ?, ?'); 
+0

그것은 효과가있다. Ben 정말 고마워. –

+0

답으로 표시해도 괜찮다면 좋을 것입니다. 감사! –

관련 문제