A Day In The Life

とあるプログラマの備忘録

oracle

SQL*Plusの画面クリア

SQL*Plusで SQL>clear scrと打つと画面がクリアされます。 結構前からあったらいいのにな〜って思ってたのでちょっとうれしかった。 #大阪は粉雪が舞ってます。 #週末、東京ではコートいらないぐらい暖かかったのに...さむっ 参考 テクノドア〜のBlog

複数テーブルを一発INSERT

OracleではマルチテーブルINSERTという機能があって複数テーブルを一気に更新できます。 insert all into sample_table (id, name, value) values (1, 'TKISHIMO', 0) into sample_table2 (id, name, value) values (2, 'MHAYASHI', 0) select * from dual; …

ストアドプロシージャの作成

この前、テーブル全削除のPL/SQLを作成しました。 しかし毎回テキストを開いて貼り付けて実行って手順が面倒になってきたのでプロシージャとして作成することにしました。 基本構文は create or replace procedure なんですが久々だったので結構忘れちゃって…

カラム名の変更

昨日、間違えて古い定義のテーブルをインポートしちゃいました。 それでカラム名が何個か古くなってしまったのでカラム名だけ変更したいなと。。。 SQL ServerではSP_RENAMEを使えば簡単に変更できたんでOracleでもなんかあるだろうということで調べました。…

順序

Oracleで順序を作成するときは CREATE SEQUENCE TEST_SEQ START WITH 1 INCREMENT BY 1 MAXVALUE 9999999999 MINVALUE 1 CYCLE NOCACHE; と書けばOK。 参考 Oracle SQL 順序

SQL*Plusで数値の表示

SQL*Plusで検索結果を表示するとき、数値項目はデフォルトでは10桁までしか表示されません。 SQL> select -4444444444 from dual; -4444444444 ----------- -4.444E+09ちゃんと表示してくれませんね。 こういうときはset num 桁数で表示桁数の設定ができます…

SQL文の動的生成

OracleのPL/SQLでSQL文を動的に生成して実行するサンプルです。 declare wk_sql varchar2(1000); usertable user_tables%rowtype; cursor cu is select * from user_tables; begin open cu; loop fetch cu into usertable; exit when cu%notfound; wk_sql :=…

階層問い合わせ

テーブルにIDと親IDを持ち階層構造をあらわすテーブルがあるとき、階層で表示されると便利です。 Oracleではconnect by句を使ってデータの階層表示ができます。 select lpad(' ',2*(level)) || name name from emp start with parent_id is null connect by …

Oracleデータのインポート・エクスポート

今日久しぶりにデータのインポートとエクスポートをしました。 インポート imp user/password@接続文字列 tables=(テーブル名) file=c:/hoge.dmp log=c:/implog.txt fromuser=user touser=user ignore=y commit=yエクスポート exp user/password@接続文字列 …

Oracleの分析関数

以前ROWNUMよりROW_NUMBER()という記事でROW_NUMBER()関数について書きました。 この便利な関数、実は分析関数というらしいです。 ROW_NUMBER()以外にも便利な関数がいろいろあるようです。 副問い合わせが多くて複雑になったときは検討の価値ありです。 参…

ROWNUMよりROW_NUMBER()

ページ送り機能の実装でワークテーブルを使って実現する予定でした。 しかしOracleのROWNUM擬似列を使って実現することになりました。 このROWNUM少々厄介です。 Order byを使うと思ったデータを取得してくれないのです。 たとえば select id,name from user…