徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2010年 4月
« 3月   5月 »
 123
45678910
11121314151617
18192021222324
252627282930  
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2010年4月15日(木曜日)

ruby dbi で i5 のストアド

カテゴリー: - flyman @ 21時59分14秒

結局、ruby dbiではストアドが返すパラメータ値をそのまま受け取ることは出来ないようだ。

CLPで書いたストアドプロシージャに値を渡す場合は、次のような感じで行ける。

例えば、データエリアに値をセットするCLプログラム『MYLIB.MYCLP』を作る

PGM PARM(&DATA)
DCL VAR(&DATA) TYPE(*CHAR) LEN(10)
CHGDTAARA DTAARA(MYDTAARA) VALUE(&DATA)
ENDPGM

これを呼び出すストアドプロシージャを作る
STRSQLして、

>CREATE PROCEDURE MYLIB/MYPROC(IN DATA CHAR (10))
LANGUAGE CL NOT DETERMINISTIC NO SQL
EXTERNAL NAME MYLIB/MYCLP PARAMETER STYLE GENERAL

Ruby on Rails側は、

application.rb controllerあたりで、
require ‘dbi’
しておき、

conn = DBI.connect(’DBI:ODBC:MYDSN’,'MYACCOUNT’,'MYPASSWORD’)
data = ‘1234567890′
sth = conn.prepare("CALL MYLIB.MYPROC(?)")
sth.bind_param(1, data)
sth.execute
sth.finish
conn.disconnect if conn

これで行ける。ストアドは、RPGでも、その他の言語でも書ける。

さてしかし、ストアドから値を受け取るのは、perl dbiのようには行かない。ruby dbiで値を受け取るには、SELECTなど値を返すSQLの結果データセットの形にしなければならないらしい。

取り敢えずは、返したい値をデータベースに書き込むようなストアドを書き、それを走らせた後でそのデータベースから値を取り出すようにすれば、まあやりたいことは叶う。
もう少し賢いやり方もありそうだし、そもそもdbiにこだわらなくても出来るのかもしれないが、まずはdbiを使っても、かなり高度なプログラムが書けそうなめどは立ったかな、と。

伊勢原では、梨畑の白い花が咲き誇っている。


TrackBacks

このコメントのRSS

TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/399

この投稿には、まだコメントが付いていません

コメント

 
投稿された内容の著作権はコメントの投稿者に帰属します。

20 queries. 0.208 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
nikkansports
IT Pro
レスポンス
テーマ選択

(4 テーマ)