💽
SQLとORACLEのバインド
はじめに
SQL Server 環境では、バインド変数を使用し、後から実際の値をバインドする手法に慣れていました。しかし、Oracle 環境で同様の処理を行う機会がなく、実装方法や注意すべき点について理解が不十分でした。そこで本記事では、Oracle におけるバインド変数の扱い方について、基本的な使用方法から実装時の注意点までを整理し、まとめます。
環境
- VB.NET (.NETFramework,Version=v4.6.2)
- Oracle Database 19c
方法
- SQL文にバインド変数を記述する
Oracleでは、バインド変数は : を使って記述します。
SQL
SELECT * FROM your_table WHERE file_path = :filePath
- OracleCommand に SQL文を設定する
VB.NET
Dim sql As String = "SELECT * FROM your_table WHERE file_path = :filePath"
Dim cmd As New OracleCommand(sql, conn)
- パラメータを追加して値をバインドする
- "filePath" は SQL文の :filePath に対応する名前です(コロンは不要)
- OracleDbType.Varchar2 はデータ型
- .Value に実際の値を設定します
VB.NET
cmd.Parameters.Add(New OracleParameter("filePath", OracleDbType.Varchar2)).Value = "C:\your\path"
よくあるミスと対策
| ミス | 対策 |
|---|---|
| CONCAT(':param', col) を使う | :param || col で結合する |
| @param を使う | Oracleでは : を使う |
| パラメータ名が一致しない | SQLとコードで名前を完全一致させる |
Discussion