「SQL」の編集履歴(バックアップ)一覧に戻る

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

なんかあればどうぞ

名前:
コメント:
記事メニュー
目安箱バナー