
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)
[ カテゴリー » SQL » PL/SQL ]
カテゴリー » SQL » PL/SQL January 11, 2011
PL/SQL 動的SQL EXECUTE IMMEDIATE ID:1294724556
カテゴリー » SQL » PL/SQL January 11, 2011
PL/SQL FETCHとカーソル属性 ID:1294723382
declare
jcrec 受注m%rowtype;
cursor cu is select * from 受注m where 品番 = 'a001';
begin
open cu;
loop
fetch cu into jcrec;
exit when cu%notfound;
dbms_output.put_line (jcrec.受注番号);
end loop;
close cu;
end;
カーソル%found fetch が行を戻せば TRUE
カーソル%isopen オープンされていれば TRUE
カーソル%notfound fetch が行を戻さなければ TRUE
カーソル%rowcount fetch された行数
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_pl05.htm
カテゴリー » 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
カテゴリー » SQL » PL/SQL January 11, 2011
PL/SQL ループ for / while / loop ID:1294719160
・FOR による繰り返し処理
-- 1 〜 3 の 3 回ループ
FOR i IN 1..3 LOOP
DBMS_OUTPUT.PUT_LINE('ループ変数 i = ' || i);
END LOOP;
・WHILE ループ
WHILE (1=1) LOOP
DBMS_OUTPUT.PUT_LINE('呼び出されます');
EXIT WHEN (1=1) ;
DBMS_OUTPUT.PUT_LINE('呼び出されません');
END LOOP;
DBMS_OUTPUT.PUT_LINE('呼び出されます');
・LOOP 〜
LOOP
DBMS_OUTPUT.PUT_LINE('呼び出されます(1-1)');
IF (1=1) THEN
EXIT ;
END IF;
DBMS_OUTPUT.PUT_LINE('呼び出されません(1)');
END LOOP;
http://www.shift-the-oracle.com/plsql/for-while-loop.html
カテゴリー » SQL » PL/SQL January 11, 2011
PL/SQL 「:=」 ID:1294714239
PL/SQL 「:=」
は、代入を意味する。
変数宣言等で使う。
varname vartype;
varname vartype := 初期値;
varname vartype default デフォルト値;
varname vartype not null := 初期値;
varname vartype := 式;
varname vartype := 変数;
constname constant vartype := 定数;
shimei varchar2(20);
ritsu number(12, 2) := 1.25;
ritsu number(12, 2) default 1.25;
ritsu number(12, 2) not null := 1.25;
atai number(12) : = 100 * ritsu;
DT_MAX constant number := 99;
C 言語の int a, b のような複数変数を一度に宣言することはできない。
変数のスコープは、begin...end; 内である。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_pl01.htm
カテゴリー » SQL » PL/SQL January 11, 2011
PL/SQL コメント方法 ID:1294714024
-- 1 行注釈
/* 複数行注釈開始
*/ 複数行注釈終了
1 行注釈は、Execute コマンド等の begin...end; ブロックなどでは使えない。
/* 1 行注釈 */ のようにして使うと良い。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_pl01.htm
最近のコメント