消費税法が施行された 1989年(平成元年)4月1日から月日が経過し、3%だった税率は 5%、8% を経てそろそろ 10% かと騒がれている今日この頃です。ここでは、消費税を例にユーザが発行した SQL の値を書き換えてテーブルにレコードを挿入、更新する PL/SQL のサンプルを掲載しています。
Tag Archives: plsql
[ Oracle PL/SQL ] セッションを使って SQL で値を共有する ( DBMS_SESSION )
WEB アプリケーションのように、Oracle でもセッションを使用して SQLで値を共有することができます。ここでは、dbms_session を使用したサンプルコードを掲載しています。
[ Oracle PL/SQL ] 挿入速度は FOR LOOP より FORALL の方が圧倒的に高速
ここでは、FOR LOOP と FORALL それぞれでデータベースへ 10 万件分のデータを insert する処理速度を比較しています。
[ Oracle PL/SQL ] constant 変数の宣言と初期化でコンパイルエラー ( PLS-00322 / PLS-00363 )
ここでは、PL/SQL で constant 変数の宣言と初期化でコンパイルエラーとなる記述方法について掲載しています。詳細はサンプル中のコメントを参照ください。
[ Oracle PL/SQL ] ユーザーの独自例外の発生と捕捉 ( raise_application_error / EXCEPTION_INIT )
「ORA-00600: 内部エラー・コード・・・」 のようにOracle で定義されているエラーだけでなく ユーザーが独自にエラー番号を定義して例外を発生させるサンプルを掲載しています。
[ Oracle PL/SQL ] バルクSQLで複数レコードを取得する ( BULK COLLECT INTO )
ここでは、バルク SQL を使用して複数レコードを変数に格納してからループ処理を行うサンプルを掲載しています。詳細はサンプル内のコメントを参照ください。
[ Oracle PL/SQL ] バインド変数を使用してセキュアに SQL を実行する
C# や Java などのプログラムから SQL を実行するときはバインド変数を使用して SQL インジェクション対策を行い、データを守るようにすることが一般的だと思いますが、Oracle データベース上で実行される PL / SQL から SQL を発行するときも同様です。Oracle が勝手に対策してくれるわけではありません。
[ Oracle PL/SQL ] Package 変数や関数のアクセスレベル
PL/SQL でパッケージを使用する際に SQL や PL/SQL から参照可能な変数やファンクション(プロシージャ)と参照できない変数やファンクションを作成するサンプルコードを掲載しています。詳細はコメントを参照ください。
[ Oracle PL/SQL ] SELECTのクエリ結果をリターン値で返す関数
select ~ into 文によって取得した値をリターン値とすることはよくありますが、リターン値は1レコード分なので、複数行を返すことはできません。ここでは、リターン値の結果に表形式の複数レコードを返すサンプルを掲載します。
[ Oracle PL/SQL ] パラメータつきのカーソルを使用する
パラメータつきののカーソルを使用するサンプルコードになります。あるクエリで取得した結果ごとに別のクエリを発行して結果を取得したい場合などに使用できます。複数件のレコードを返す SQL を関数(変数)のように記述することでソースコードもすっきりとしますので、有用かと思います。