1
私は次のコードに問題抱えている:DBI結合パラメータと角括弧
$sql = <<"END_SQL";
SELECT DISTINCT Matching.[CI M], Matching2_1.[LAC M], Matching2_1.[CI M], Matching.[Band M], Matching2_1.[Band M], Matching.Site, Matching2_1.Site, Matching.[BSC/RNC], Matching.[CellName M], Matching.[BSC/RNC M], Matching2_1.[CellName M]
FROM Matching, [N 900 - 900], Matching AS Matching2_1
WHERE Matching.[Band M]= ? AND Matching2_1.[Band M]= ? ;
END_SQL
$sth = $dbh->prepare($sql);
$sth->execute(900, 900);
列名にスペースが含まれている私は、クエリ
でそれらを使用するために、角括弧を使用して、データベースはMSへのアクセスです問題は、Perlが角括弧をバインディングパラメータとして解釈し、11個のパラメータを必要とすることです。ここで
は誤りです:quareブラケットはあなたにトラブルを与えているので、もし
DBD::ODBC::st execute failed: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 11. (SQL-07002) at NEIGHBORS MAPPING.pl line 89.
を試行し、テーブル/フィールドの区切り文字としてバッククォートを認識することができますODBCに精通していないかもしれませんが、おそらくあなたはこれを試すことができます:http://search.cpan.org/~mjevans/DBD-ODBC-1.56/ODBC.pm#odbc_ignore_named_placeholders – oals