.Net Coreで、Dapper+Oracle.EntityFrameworkCore(or Oracle.ManagedDataAccess) NuGetパッケージを使い、OracleへSQLを発行する際、バインドするSQLパラメータの識別子にアットマーク(@)を使うと、「ORA-00936: 式がありません。」エラーが発生します。
バインドするSQLパラメータの識別子にアットマーク(@)を使っていても、SQLServer/PostgreSQLではエラーにならず、ORACLEだとエラーになるので、ORACLEを使い慣れていない人はハマる。
バインドするSQLパラメータの識別子にアットマーク(@)を使ってSQLを発行しExceptionが発生するケース

バインドするSQLパラメータの識別子にコロン(:)を使ってSQLを発行し正常終了するケース

※Oracle.EntityFrameworkCore は Oracle.ManagedDataAccess と違い、ORACLE Client を別途インストールしなくても、OracleConnectionを実行できるので便利。

コメント