SQL - (2007/02/07 (水) 16:39:43) の編集履歴(バックアップ)
Contents
SQL/DDL
SQL
設定されている制約を参照する。
select a.table_name, b.column_name, a.constraint_name, a.constraint_type from user_constraints a, user_cons_columns b where a.table_name = b.table_name (+) and a.constraint_name = b.constraint_name (+)
PL/SQL パッケージの一覧を参照する。
select object_name from user_objects where object_type = 'PACKAGE'
object_typeには INDEX, LOB, PACKAGE, PACKAGE BODY, PROCEDURE, SEQUENCE, TABLEがある。
PL/SQLパッケージソースの復元
select text from user_source where name = 必要なパッケージ名 and type = 'PACKAGE BODY' order by line
- spoolに出力するがよい。
- typeには INDEX, LOB, PACKAGE, PACKAGE BODY, PROCEDURE, SEQUENCE, TABLEがある。
INSERT...SELECT文の構文
insert into table_name1 (col_name1, col_name2...) select col_mame1, col_name2... from table_name2 where id = 1;
- values句は不要。
- カラムの型は同じでないといけない。
トランザクション管理
セーブポイント
savepoint セーブポイント名
- commitはトランザクション全てコミットされる。
- rollbackはトランザクション全て破棄される。
- 同一トランザクション内で同じ名前のセーブポイントを指定した場合、上書きされる。
rollback to savepoint セーブポイント名;
- セーブポイント名を設定した以後のトランザクションが破棄される。
- セーブポイント以前のトランザクションは生き。
- セーブポイント名が未設定のセーブポイントの場合、エラーとなる。
月末日を求める。
TO_DATE(TO_CHAR(ADD_MONTH(TO_DATE('適当な日付'), 1), 'YYYY/MM') || '/01') -1
- 適当な日付 に1月足して、月初日(01)を算出し、1日引く。
欠番探索
select NEW_CODE = min(t1.CODE + 1) from ( select CODE from [TABLE] union all select CODE from [RESERVE] (READUNCOMMITTED) ) t1 left outer join ( select CODE from [TABLE] union all select CODE from [RESERVE] (READUNCOMMITTED) ) t2 on (t1.CODE + 1) = t2.CODE where t2.CODE is null
その他
shellからSQLを実行する。
SQLファイルを実行
sqlplus -S uid/pass@sid @hoge.sql
SQL文を実行
sqlplus -S uid/pass@sid <<END select sysdate from dual; exit sql.sqlcode END