日々常々

ふつうのプログラマがあたりまえにしたいこと。

Oracle

oo4o+VB.NETの注意点(オープンカーソル)

JavaCloudMeetingで熱くなってるところに冷や水をぶっ掛ける自虐プレイ的に今日はVB.NETの記事です。 VB.NETで作られたASP.NETのWebアプリケーションでデータベース接続にoo4oを使用するお話。このご時勢にVB.NETのWebアプリケーションとか都市伝説とか思わ…

Oracleのエンジニア対象セミナーに行ってみよう

実際、仕事ではOracleを使う事が多いです。 今まで関わったプロジェクトでは、MySQLは2件、SQLServerは1件、他全部Oracleという感じ。そういう背景が有ってか無くてか、第47回 夜な夜な! なにわオラクル塾に申し込んでみました。 これまでSQLが原因の致命的…

JavaからOracle接続時にORA-12705が発生する

JDBC経由でOracleに接続する際、稀にORA-12705が発生するという事象がありました。環境は Java1.6 Oracle10gXE ojdbc14.jar です。ojdbc6.jar を使うべきなのかも知れませんが、現状この環境なのだから仕方がありません。 java.sql.SQLException: ORA-00604:…

実行計画の権限

autotraceを実行しようとして次のエラーが発生する場合は、メッセージが示すとおり権限不足。 SQL> set autotrace on SP2-0618: セッション識別子が見つかりません。PLUSTRACEロールが有効かを確認してください。 SP2-0611: STATISTICSレポートを使用可能に…

実行計画の取り方

SQL*Plusで実行計画をとるには、単純にautotraceをonにする。 set autotrace onこれ以降実行したSQLは、SQLの結果と実行計画と統計情報が出る。 でも実行計画をとるときって、結果は要らない事が多い。その時はonの代わりに traceonly またはその省略形の tr…

NVLでエラー(ORA-06502: PL/SQL: 数値または値のエラー:)が発生する

環境はOracle10gXEです。 数値項目がNULLか判定し、NULLだった場合に「NULL」という文字列に置き換えて出力したい時に、単純にNVLを使うとエラーになります。以下は例。 SQL> DECLARE 2 VNUM NUMBER; 3 BEGIN 4 DBMS_OUTPUT.PUT_LINE(NVL(VNUM, 'NULL')); 5 …

テーブル名変更時のエラー

テーブル定義を変えたい時はALTER TABLEを使用します。テーブル名を変更したい時は以下のようにします。 ALTER TABLE <変更前テーブル名> RENAME TO <変更後テーブル名> やってみましょう。 SQL> ALTER TABLE WORK.TEST_TABLE RENAME TO WORK.TEST_TABLE…

Oracle10gXEでファイル出力

UTL_FILEでファイル出力しようとしたら失敗したので。 UTL_FILEが使えない [row:xx,col:xx] ORA-06550: 行xx、列xx: PLS-00201: 識別子UTL_FILEを宣言してください。 ORA-06550: 行xx、列xx: PL/SQL: Item ignored (以下略)SYS.UTL_FILEに対するEXECUTE権限…

PL/SQL処理結果出力方法とかかる時間の目安

PL/SQLの処理結果を出力する方法となると、DBMS_OUTPUTで出力したり、UTL_FILEで出力したり、結果テーブルを作成してINSERTしたりとあるような無いような。結果がCSV形式で必要なら、TABLEにINSERTするかUTL_FILEを使う事になると思う。それぞれのやり方でど…

テーブルのデータをCSV出力する

力技そのいち SQL*Plusの列区切り文字を「,」にする。 利点は、なんといっても手軽さ。 欠点 可変長項目が固定長になってしまう。 その為NULLとスペース埋めや、末尾スペースの存在等が判別不可。 複数テーブルを一気に取得できない。 力技そのに 列を「,」…

テーブルのデータをCSV出力する(SQLを作るSQL)

これは試行錯誤の途中経過です。まとめ→http://d.hatena.ne.jp/irof/20100108/p2 - PL/SQLは嫌だとか、古いバージョンで使えないとか、ネットワークから隔離されているとかの逃げ道に、SQLを作るSQLを発行して、作ったSQLを発行する手があります。1テーブル…

テーブルのデータをCSV出力する(PL/SQLでやってみる)

これは試行錯誤の途中経過です。まとめ→http://d.hatena.ne.jp/irof/20100108/p2 - 「余計なスペースが入って欲しくない場合」かつ「対象テーブルまたは列が沢山ある場合」で、力技なんてやってられない場合のやり方。この場合は、諦めて出力するツールを使…

テーブルのデータをCSV出力する(力技そのに)

これは試行錯誤の途中経過です。まとめ→http://d.hatena.ne.jp/irof/20100108/p2 - 「余計なスペースが入って欲しくない場合」の少々面倒なもの。取得したい列名が判っている必要があります。単純に文字列「,」で繋げてしまうだけなんですが。 set pages 0 s…

テーブルのデータをCSV出力する(力技そのいち)

これは試行錯誤の途中経過です。まとめ→http://d.hatena.ne.jp/irof/20100108/p2 - 使うのはSQL*Plusのみ。便利なツールは色々あるけれども、いつでも使えると言うわけではないので。 はじめに、「データが確認出来れば良い場合」に適した、最も単純なもの。…

今更ながらOracle10gXEインストールのメモ

ダウンロードはOracleのとこから。 http://www.oracle.com/technology/software/products/database/xe/index.htmlOracle Database 10g Express Edition (Universal)のとこにあるOracleXEUniv.exeをダウンロードしてインストール。手順は割愛……するまでも無く…