SQL で文字列を扱う場合は、シングルクォーテーション ( ‘ ) で囲む必要がありますが、シングルクォーテーション自体を文字として扱いたい場合には ( ” ) とシングルクォーテーションを2つ連続で記述しなければいけません。また、Oracle 10g から代替引用符 q 演算子を使用することでも同等のことができるようになりました。ここではこれらのサンプル SQL を掲載しています。
Tag Archives: oracle
[ Oracle SQL ] 文字列の前後のスペースの除去と挿入 ( Trim, Padding )
多くのプログラム言語では文字列の前後のスペースを除去するための trim 関数が用意されていますが、 Oracle にも trim 関数が用意されています。また、文字列の前後にスペースや 0 などをパディングして桁数を揃える lpad, rpad 関数も用意されています。ここでは、それらの使用例を掲載しています。
[ Oracle ] SQL の null 判定は等号(=)、不等号(<>)ではなく is null, is not null
ここでは、Oracle における SQL の null 判定についての確認を行っています。以下のテーブルを作成して、NULL_VALUE 列が null の行と、そうではない行を挿入して select の null 検索を検証してみます。
[ Oracle ] 行番号を取得する ( ROW_NUMBER 関数 )
Oracle の ROW_NUMBER 関数で行番号を取得することができます。ここでは、以下の 従業員情報を格納した emp テーブルを例に ROW_NUMBER 関数の使用方法を確認します。
[ Oracle PL/SQL ] バインド変数を使用してセキュアに SQL を実行する
C# や Java などのプログラムから SQL を実行するときはバインド変数を使用して SQL インジェクション対策を行い、データを守るようにすることが一般的だと思いますが、Oracle データベース上で実行される PL / SQL から SQL を発行するときも同様です。Oracle が勝手に対策してくれるわけではありません。
[ Oracle ] Case ~ When ~ Then で null 判定 ( is not null )
Oracle データベースでは、SQL 内で if 文のような分岐を行う場合には Case ~ When ~ Then を使用することができますが、以下のような記述で null の判定を行うことはできません。
[ Oracle ] CREATE SEQUENCE で自動インクリメント風の動作
Oracle には MySQL や Postgresql のようにレコードを挿入すると自動的に値をインクリメントして挿入する機能はありません。ここでは、CREATE SEQUENCE 文でシーケンスを作成し、自動インクリメント風の動作をさせてみようと思います。レッツ挿入!
[ Oracle PL/SQL ] Package 変数や関数のアクセスレベル
PL/SQL でパッケージを使用する際に SQL や PL/SQL から参照可能な変数やファンクション(プロシージャ)と参照できない変数やファンクションを作成するサンプルコードを掲載しています。詳細はコメントを参照ください。
[ Oracle PL/SQL ] SELECTのクエリ結果をリターン値で返す関数
select ~ into 文によって取得した値をリターン値とすることはよくありますが、リターン値は1レコード分なので、複数行を返すことはできません。ここでは、リターン値の結果に表形式の複数レコードを返すサンプルを掲載します。
[ ODP.NET ] Oracle へ接続し SQL を発行する (OracleConnection / OracleCommand)
ODP.NET を使用して、SQL を発行するサンプルです。通常、よく使用するのは select / insert / update / delete 文 だと思いますが。大きく分けて結果が返される select 文と、結果が返されない insert / update / delete 文では SQL の発行方法が異なります。