DB

バルクバインド(BULK BIND)の例

DB

セレクト結果を一行づつ処理したいってとき、BULK BIND(BULK FETCHもあるみたい)っていうこともoracleではできるんですね。 -- バルクバインドの例 SET SERVEROUTPUT ON DECLARE TYPE TLINE IS TABLE OF テーブル名%ROWTYPE INDEX BY BINARY_INTEGER; vLIN…

SQLで2つのカラムに分割された最後のCR、最初のLFを調べる方法

DB

oracleで2つのカラムにCRLFが分割されて保存されてしまった場合を調べる方法。 select id from テーブル where desc1 like '%' || chr(13) and desc2 like chr(10) || '%'; ちなみに以下の正規表現ではできなかった。 select id from テーブル where regexp…

レコード確認してからのINSERT

DB

レコードがない場合に限りinsertする方法。キーにしてエラーにすればよいって言われるのはわかっているけど、エラーメッセージ見たくない(見せたくない)人向け。 INSERT INTO テーブル(col1, col2) SELECT '値1', '値2' FROM DUAL WHERE NOT EXISTS(SELECT…

Oracle NVARCHAR2(1600)で1600文字入らない件

DB

NVARCHAR2のカラムを大きくして大量文字を入力しようとすると以下のエラーが発生して入力できない。 エラー:: ORA-01461 : LONG値はLONG列にのみバインドできます。 ググってみたところ、 http://www.projectgroup.info/tips/Oracle/errorcode/ORA01461.html…

Oracle NVARCHAR2を文字列連結するときの注意

DB

検索したい該当カラムがNVARCHAR2でも連結すると暗黙変換でVARCHAR2となるらしく、4000byte以上はエラーとあるため、以下のようにTO_CLOB('')を連結しとく必要がある。 SQL> select col1 from foo_table where (TO_CLOB('') || col1 || col2) like '%検索%';…

PostgreSQLデータベースのSlony-Iでのレプリケート例

参照サイト http://d.hatena.ne.jp/ttshrk/20110414/1302760971 http://tsunokawa.hatenablog.com/entry/20110412/1305643454 http://news.mynavi.jp/column/yetanother/031/ 環境 マスタ側(更新側) 172.16.167.144 スレーブ側(参照側) 172.16.167.130 O…

SQLite3のサンプル

SQLite3のC言語APIとsqlite3コマンドをCentOS6.4で動作検証してみたときの備忘録。 環境 [kohchi@localhost sqlite]$ cat /etc/redhat-release CentOS release 6.4 (Final) [kohchi@localhost sqlite]$ cat /proc/version Linux version 2.6.32-358.6.2.el6.…

PostgreSQLのUPDATE文がバージョンによって違う件

DB

PostgreSQLにてUPDATE文を使用する際にはバージョンによってリスト構文で書けない場合があったので備忘録。 PostgreSQL8系 http://www.postgresql.jp/document/8.1/html/sql-update.html UPDATE table名 SET col1=val1,cal2=val2 WHERE col3='foo'; PostgreS…