12cじゃなくて11gなんだけど、まあいいか。
環境
- Ubuntu 16.04
- fish 2.2.0
流れ
- sqlplusを使えるようにすること
- OracleのDockerコンテナを立ち上げること
sqlplusを使えるようにすること(fish shell)
これについては各所で言われているので、詳細は省きます。なお、これらをダウンロードするためにはOracleのアカウントが必要だと認識しています。
ダウンロードサイトからoracle-instantclient12.1-basic/sqlplus/develをダウンロードしておく。 Instant Client downloads for Linux x86-64
rpm to debのために以下を実行しとく。
$ sudo apt-get install alien
rpm to debして、それらをインストールしておく。
sudo alien oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
sudo alien oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
sudo alien oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
sudo dpkg -i oracle-instantclient12.1-basic_12.1.0.2.0-2_amd64.deb oracle-instantclient12.1-sqlplus_12.1.0.2.0-2_amd64.deb oracle-instantclient12.1-devel_12.1.0.2.0-2_amd64.deb
config.fishに書いておく→source ~/.config/fish/config.fish ただしこのあたりはTODOで、set -gxって1回しか使えない??本当??っていうのは調べておくこと。exportではなくsetを使うことがポイント。
set -gx PATH xxxxxxx /usr/lib/oracle/12.1/client64/bin $PATH set LD_LIBRARY_PATH /usr/lib/oracle/12.1/client64/lib set NLS_LANG Japanese_Japan.UTF8
Oracle
ぶっちゃけこのあたりは何でもいいと思う。自作してもいい。
ただドキュメントをなぞるだけ。pullすらしてない。
sudo docker run -d -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g
あとは。
sqlplus system/oracle@localhost:49161/xe SQL*Plus: Release 12.1.0.2.0 Production on 土 9月 24 19:58:10 2016 Copyright (c) 1982, 2014, Oracle. All rights reserved. Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production に接続されました。 SQL>
お好みでrlwrapをつけるといいと思う。
SQLグラフ理論のサンプルコードを実行できるようにしたい人生だった
いけたとおもう。
CREATE FUNCTION ReverseString (instring IN VARCHAR) RETURN VARCHAR IS BEGIN IF LENGTH(instring) = 0 OR LENGTH(instring) = 1 -- 停止条件 THEN RETURN (instring); ELSE RETURN -- 文字列を真ん中で区切って左右を入れ替える ReverseString(SUBSTR(instring , LENGTH(instring) / 2+1)) || ReverseString(SUBSTR(instring ,1, LENGTH(instring) / 2 )); END IF; END; / SELECT ReverseString('abcde') from dual; ファンクションが作成されました。 SQL> SQL> REVERSESTRING('ABCDE') -------------------------------------------------------------------------------- edcba
と思ったら、
SQL> INSERT INTO Personnel_OrgChart VALUES('Albert', NULL, 1000); INSERT INTO Personnel_OrgChart VALUES('Albert', NULL, 1000) * 行1でエラーが発生しました。: ORA-00001: 一意制約(SYSTEM.SYS_C006998)に反しています
どうなのか。このあたりは自分でなんとかせいってことなのか。

プログラマのためのSQLグラフ原論 リレーショナルデータベースで木と階層構造を扱うために
- 作者: ジョー・セルコ
- 出版社/メーカー: 翔泳社
- 発売日: 2016/09/12
- メディア: Kindle版
- この商品を含むブログを見る