Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

カテゴリー » SQL » PL/SQL January 11, 2011

PL/SQL type %type属性 ID:1294720952


●変数名 表名.列名%TYPE;・・・Type属性

テーブルの列の型と同じ型で変数が定義される。
(簡単に言うと、「1つの列」のみ)
テーブルの型変更に、PL/SQLを変更しないで済むメリットがある。
(データベースのある列のデータ型が変わったときに、その列の値を格納する内部変数の宣言を変えなくてよい、ということ)
NOT NULL制約のある列でも、変数にNOT NULLは適用されないのでNULLの代入が可能

・表「emp」の列「emp_name」の型で、変数”empname”を定義する。
declare
empname emp.emp_name%type;
:
:

●変数名 表名%ROWTYPE;
%ROWTYPE は表から取得したレコード全体を定義できる。
(簡単に言うと、「テーブル全体」)

declare

-- %ROWTYPEを宣言
dept_rec dept%rowtype;

begin

-- SELECT INTO句でDEPT表を代入
select * into dept_rec from dept where dept_id = 'D01';

dbms_output.put_line(dept_rec.dept_id);
dbms_output.put_line(dept_rec.dept_name);

end;


●typeによる宣言
DECLARE
TYPE 表名 IS TABLE OF データ型
INDEX BY BINARY_INTEGER;
BEGIN

END

TYPE文で型を宣言し、その型を使用して表宣言を行う。

== 例 ==
DECLARE
 TYPE ary_num IS TABLE OF NUMBER
  INDEX BY BINARY_INTEGER;
 a_empno ary_num;
 a_sal   ary_num;
 CURSOR c1 IS
  SELECT empno, sal FROM emp ORDER BY empno;
 cnt    NUMBER;
BEGIN
 cnt := 0;
 FOR rec IN c1 LOOP
  cnt := cnt + 1;
  a_empno( cnt ) := rec.empno;
  a_sal( cnt ) := rec.sal;
 END LOOP;
END;


http://oracle.se-free.com/plsql/d1_rowtype.html
http://www.t3.rim.or.jp/~buchi/plsql/sld027.htm
— posted by midilin @ 01:42PM
[コメントが多かった順の記事]
人の心理の裏をかくホームページ集客術:リピータになってもらうためには(233)
ホームページ心理学第2弾「メールの書きだしとホームページ運営・集客の関係」(76)
娘が生まれた(69)
ゲームと言えば、何を思い出す? (50)
Microsoftからアクセス (30)
「目標の立て方」と「努力」と「実行力」(26)

カウンター