.Net Coreで、Dapper+Oracle.EntityFrameworkCore(or Oracle.ManagedDataAccess) NuGetパッケージを使い、OracleへSQLを発行する際、バインドするSQLパラメータの識別子にアットマーク(@)を使うと、「ORA-00936: 式がありません。」エラーが発生します。
バインドするSQLパラメータの識別子にアットマーク(@)を使っていても、SQLServer/PostgreSQLではエラーにならず、ORACLEだとエラーになるので、ORACLEを使い慣れていない人はハマる。
バインドするSQLパラメータの識別子にアットマーク(@)を使ってSQLを発行しExceptionが発生するケース
![](https://blog.unikktle.com/wp-content/uploads/2023/01/image-64.png)
バインドするSQLパラメータの識別子にコロン(:)を使ってSQLを発行し正常終了するケース
![](https://blog.unikktle.com/wp-content/uploads/2023/01/image-65.png)
※Oracle.EntityFrameworkCore は Oracle.ManagedDataAccess と違い、ORACLE Client を別途インストールしなくても、OracleConnectionを実行できるので便利。
![](https://blog.unikktle.com/wp-content/uploads/2023/01/image-63.png)
コメント