RubyでSQLServerへつなぎたい
つなぎたいのだが、ドライバーのインストールでエラーが発生してしまう。
環境:Windows8.1 (64bit)
Ruby:2.5.1 →2.4.4
※インストーラー使用
まずドライバーが合ってる?、というところなのだが、これが一番よくわからない。
最初、調べてみたらRuby/DBIがヒットしたのでこれを使うのかと思ってinstallしたが、
そもそもこのRuby/DBIは1.8までしかサポートしていないということなので、
Ruby2.0以上の場合はRDBIをインストールする模様。
しかし、試しに入れてみるとドライバーのインストールでエラー。
gem install pg gem install rdbi gem install rdbi-driver-odbc --ここでエラーが発生
エラーログを見ると、
C:/Ruby24-x64/include/ruby-2.4.0/ruby/ruby.h:2170:12: error: invalid operands to binary / (have 'int' and 'char *')
実行時エラーになっている。
なんで??
これをggってみても記事が見つからず、途方にくれたのでメモっておく。
参考:
VBAの備忘メモ(配列の宣言)
久しぶりにVBA
触ったら配列の宣言方法を忘れたのでメモ。
Variantってなかなか使わない言葉だったのですっかり忘れてました。
'数は要素数かと思いきやインデックスの最大数っぽい。1つ多いとEmpty値になる=空白? Dim noUseCharacter(6) As Variant
ついでにワークシート名の文字チェックプロシージャー
Arrayを使うと要素数を最初に宣言しなくていいんだね。
探せばどこにでもありそうだけど。
Function chkSheetName(ByRef sheetName As String) As Boolean Dim noUseCharacter As Variant Dim str As Variant Const MaxNameSize As Integer = 31 Dim errFlg As Boolean noUseCharacter = Array(":", "\", "/", "?", "*", "[", "]") '桁数チェック If Len(sheetName) > MaxNameSize Then errFlg = True Else '使用できない文字チェック For Each str In noUseCharacter If InStr(sheetName, str) > 0 Then errFlg = True Exit For End If Next str End If chkSheetName = errFlg End Function
PLSQLでパッケージになくてBody部にあるfunctionの場合
同一パッケージ内はfunctionが使えるけど、他のパッケージからは呼べないんだね。
知らなかった。
Javaでいうprivateメソッドみたいな感じなのかな。
仕方なくパッケージに追加したら呼べるようになりました。
SQLDeveloperからプロシージャーを実行する
JavaからPL/SQLを呼んで結果を返す処理があって、 呼び出し方が独自処理だったのでホントに想定の処理しているかよくわからなかったので
そもそも結果って何が返ってる?と確認したいときのメモ。
※SQLDeveloper上で実施する前提です。 タイトルにプロシージャって書いたけど、正確にはfunctionの呼び出しになるのかも。(すいません
select function(args) from DUAL;
例)
select hoge('foo',0) from DUAL;
追記
・プロシージャを呼び出したい場合はcallを使う
call procedure(args);
例)
call hoge('foo',0);
・Functionのパッケージから指定したい場合
select PACKAGE.Function(args) from DUAL;
例)
select bar.hoge('foo',0) from DUAL;
Gtk-WARNING **: cannot open display: で怒られた
コンソール越しに言われても。
そんなときはこのコマンド
unset SSH_ASKPASS
参考:
コンソール越しに git コマンドから Gtk-WARNING **: cannot open display と怒られた時 - Qiita