宣言部と変数の定義 「%TYPE」「%ROWTYPE」:超入門「PL/SQL」(3)(1/3 ページ)
本連載は、「PL/SQL(Procedure Language/Structured Query Language)」を理解し、活用していくための実践講座です。今回は、「%TYPEおよび%ROWTYPE属性の変数を定義する記述方法」を解説します。
本連載は、Oracle Database向けにデータベース言語 SQL(Structured Query Language)を拡張したプログラミング言語である「PL/SQL(Procedure Language/Structured Query Language)」を理解し、活用していくための実践講座です。SQLは知っているけれど、OracleでのPL/SQLは初めてという人向けに、機能の概要と具体的な書き方を解説していきます。
今回は、「%TYPE」「%ROWTYPE」属性を使用した変数の定義方法を解説します。
「%TYPE」「%ROWTYPE」属性とは何か
「%TYPE」「%ROWTYPE」属性では、表の列や行、または既に宣言された変数のデータ型を参照する「変数」を定義できます。
PL/SQLでは、Oracle Database内の表から取り出したデータを「変数に代入」して処理することがよくあります。このような場合には、変数のデータ型を直接指定するのではなく、「%TYPE」や「%ROWTYPE」属性を使うと効率が上がります。例えば以下のような記述になります。
DECLARE e_deptno dept.deptno%TYPE; BEGIN NULL; END; /
このサンプルプログラムでは、変数「e_deptno」を「dept.deptno%TYPE」で定義したものです。これで、「“DEPT”表の“DEPTNO”列のデータ型を参照する」という記述になります。
「%TYPE」「%ROWTYPE」属性を使う利点は次の通りです。
- 列の定義が変更になってもプログラムの修正が必要ない
- 列の正確な定義が分からなくても変数を定義できる
もう少し具体的な例で考えてみましょう。
“DEPT”表の“DEPTNO”列が「NUMBER型」で、その最大サイズが「2」だとします。この列のデータを格納する変数を「直接データ型で定義する」場合には、列の定義に合わせて「NUMBER(2)」と指定します。
しかしその後、DEPT表のDEPTNO列の最大サイズが「4」に拡大されたとしたらどうすれば良いのでしょう。直接定義している場合には、「関係する変数の定義」も同時に変更しなければエラーが発生する可能性があります(図1)。
この課題は、データ型に「%TYPE」「%ROWTYPE」属性を定義することで回避できます。「%TYPE」「%ROWTYPE」属性は列のデータ型や、既に定義されている変数のデータ型を参照すると前述しました。ですから、対応する列定義の変更に合わせて変数のデータ型も自動的に変更されるのです。「プログラムの修正が必要ない」のはこのためです。
また、列定義を参照することから、列の正確なデータ型や最大サイズを知らないとしても変数を簡単に定義できます。
続いて、各属性の書式を確認しましょう。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- DBエンジンを最大限に生かすバッチアプリの作り方
第1回では、バッチアプリケーションを設計するうえで考慮すべき4つのポイントについて解説しました。今回は、Oracleデータベースを最大限に利用したバッチアプリケーションの実装テクニックについて解説します。 - ODTを使ったVisual StudioからのPL/SQL開発
オラクル社が提供する3つの.NET環境用開発ツール「ODP.NET」「ODT」「ODE.NET」。Oracle 10gリリース2に対応した最新版を使って、Oracleデータベースを前提とした.NETアプリケーションの開発手法を解説する。(編集部) - 更新/挿入/削除のSQLを高速化する3つの技とは?
本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状で広く使われているOracle9iの機能を基本とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局) - 【Oracle Database】忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は基本編として「アラートログの調査で押さえるべき3つのポイント」を解説します。【Oracle Database 12c対応版】