Web Artisan Blog - ウェブ アルチザン ブログ

VIEWのCREATE文中で定数を使いたい

SQL

2004年05月31日

パッケージ定数は、VIEWのCREATE文では参照できない。
この場合は、定数を返却するFUNCTIONを作成し、
CREATE文中では、そのFUNCTIONを参照することで実現できる。
0 Comment  0 Trackback  Permalink

JOINを使った外部結合・・(+)を使わない

SQL

2004年05月31日

A.Key = B.Key(+)

例)

FROM A LEFT JOIN B ON A.Key = B.Key



→RIGHT JOIN
→OUTER JOIN(両方にあってもなくても取得)
0 Comment  0 Trackback  Permalink

自動でカウントアップするような値を持ちたい(Oracle)

SQL

2004年05月31日

Oracleシーケンスを使用

例)

CREATE SEQUENCE testseq 〜 ← シーケンス作成

SELECT testseq.CURRVAL FROM DUAL ← 現在のシーケンスの値を参照

SELECT testseq.NEXTVAL FROM DUAL ← 次のシーケンスの値を参照 ※参照した時点でカウントアップ


3 Comments  0 Trackback  Permalink

SQL文で、ある月の最終日を取得したい場合

SQL

2004年05月31日

LAST_DAY(対象日)で可能。

例)

SELECT LAST_DAY(TO_DATE('20040120')) FROM 〜



@検索結果
20040131・・・DATE型で返却される。
0 Comment  0 Trackback  Permalink

PL/SQLのカーソルの使い分け

SQL

2004年05月31日

検索結果1件を求めるなら、SELECT INTO 〜 でSQL発行。
複数件を求める場合は。カーソルを使用。
0 Comment  0 Trackback  Permalink

PL/SQLのIF文でのNULL値の扱い

SQL

2004年05月31日

PL/SQLでは、
NULL値はISNULL以外の条件式を無視する。

例)

IF a < b THEN ← aにNULL、bにNULLでも結果はELSEになる
・・・・
ELSE
・・・・
END IF;




0 Comment  0 Trackback  Permalink

SQLの中でIF文を使いたい(Oracle)

SQL

2004年05月31日

1、CASE式で可能。
SQL文中で、IF文論理を使用できる。

例)

SELECT SUM(CASE WHEN B='1' THEN A
ELSE A*-1 END)〜



2、DECODE式で可能・・・値を比較し結果を戻す。

例)

SELECT DECODE(a_id, 1, 'a',
2, 'b',
3, 'c',
'd' ← どれにも当てはまらない場合(DEFAULT値)
)
FROM 〜



※a_idが1の場合は、'a'を返す。。。

0 Comment  0 Trackback  Permalink

1回のSQLで小計、合計を計算するには(Oracle)

SQL

2004年05月31日

ROLLUP操作で可能。
・・・GroupBy句に使用する。検索結果がツリー構造イメージで返ってくる。
(対象件数が1件であっても、複数件返って来ることになる)
パフォーマンスはいいらしい。。

例)
@検索SQL

SELECT table_a.COL1, table_b.COL2, SUM(table_c.COL3)
FROM table_a, table_b, table_c
WHERE 〜
GROUP BY ROLLUP (table_a.COL1, table_b.COL2);



@検索結果

COL1         COL2           COL3
−−−−−−−−−−−−−−−−−−−−−−−−−−−
XXXX         YY             10
XXXX         YY             20
XXXX                        30 ←小計取得
WWWW         ZZ             5
WWWW         ZZ             10
WWWW                        15 ←小計取得
                            90 ←合計取得


0 Comment  0 Trackback  Permalink

SQLの実行計画

SQL

2004年05月31日

実行したSQLのパフォーマンスを測定する為に、実行計画を計測する。

※SQL*PLUSで、”set autotrace on”コマンドの実行後、
SQLを実行することで、測定できる。
1 Comment  0 Trackback  Permalink

SQL*PLUSでPL/SQL内のデバッグを行うには

SQL

2004年05月31日

DBMS_OUTPUT.PUT_LINEを使用。

例)

--PL/SQL内でデバッグを行いたい箇所に挿入
DBMS_OUTPUT.PUT_LINE(〜);



※SQL*PLUSで、”set serveroutput on”コマンドの実行が必要。

0 Comment  0 Trackback  Permalink

PL/SQLでUPDATEした件数を取得したい

SQL

2004年05月31日

SQL%ROWCOUNTを使用。

例)

wk_cnt := SQL%ROWCOUNT;



0 Comment  0 Trackback  Permalink