💽

SQLとORACLEのバインド

に公開

はじめに

SQL Server 環境では、バインド変数を使用し、後から実際の値をバインドする手法に慣れていました。しかし、Oracle 環境で同様の処理を行う機会がなく、実装方法や注意すべき点について理解が不十分でした。そこで本記事では、Oracle におけるバインド変数の扱い方について、基本的な使用方法から実装時の注意点までを整理し、まとめます。

環境

  • VB.NET (.NETFramework,Version=v4.6.2)
  • Oracle Database 19c

方法

  1. SQL文にバインド変数を記述する
    Oracleでは、バインド変数は : を使って記述します。
SQL
SELECT * FROM your_table WHERE file_path = :filePath
  1. OracleCommand に SQL文を設定する
VB.NET
Dim sql As String = "SELECT * FROM your_table WHERE file_path = :filePath"
Dim cmd As New OracleCommand(sql, conn)
  1. パラメータを追加して値をバインドする
  • "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