Oracle データベースを介して接続しているテーブル (従業員) から値を取得しようとしています。1 つの列に数百の値があるため、テーブルを反復処理して正確な値を取得する必要があります。
インデックス番号を使用すると機能するコードがあります。row[1] などですが、row[1] の代わりに column_name の「名」を使用したかったのです。以下は、私が持っているコードです。コード:
def load_borrower
connection = OCI8.new('usrname', 'pwd', //host:portno/sid')
connection.exec(("SELECT BI_PREFIX, BI_FNAME, BI_MNAME, BI_LNAME, B.BI_SUFFIX, BI_ID_TYPE, BI_ID_NUMBER, BI_DOB, B1.*, R.*, M.*, C.*, L.* FROM EMPLOYEE, SC_BORROWERPREF_NEW S1, BORROWER_NEW B, BORROWERPREF_NEW B1, RES_ADD R, MAIL_ADD M, CLOS_ADD C, LLORD_ADD L WHERE S2=SCENARIO_ID = S1.SCENARIO_ID AND S1.PREF_ID = B1.PREF_ID AND B1.BORROWER_ID = B.BORROWER_ID AND B1.PREF_ID = R.RES_PREF_ID AND B1.PREF_ID = M.MAIL_PREF_ID AND B1.PREF_ID = C.CLOS_PREF_ID AND B1.PREF_ID = L.LLORD_PREF_ID AND S.RELEASE_ID= "1" AND S.SCENARIO_NO = '2' ORDER BY S1.SC_BORROWERPREF_ID") do |row|
$BI_PREFIX=row[0].to_s
$BI_FNAME=row[1].to_s
$BI_MNAME=row[2].to_s
$BI_LNAME=row[3].to_s
$BI_SUFFIX=row[4].to_s
$BI_BI_ID_TYPE=row[5].to_s
$BI_BI_ID_NUMBER=row[6].to_s
$BI_DOB=row[7].to_s
$BI_EMAIL=row[9].to_s
$BI_CELL_PH=row[11].to_s
$BI_WORK_PH=row[12].to_s
$BI_PREF_CONT=row[13].to_s
$BI_MAR_STATUS=row[16].to_s
$BI_EMP_STATUS=row[23].to_s
$BI_EDUC_YEARS=row[17].to_s
$BI_NUM_DEPEND=row[21].to_s
end
end
今、私は以下の上記の機能を実行しています
load_borrower
したがって、上記のコードは現在正常に動作します。しかし、上からわかるように、db テーブルの変数を行 [5]、行 [24] のように定義していますが、これは機能しますが、非常に多忙で時間がかかります。したがって、すべての column_name のインデックスを見つけるのではなく、行と row['Emp_id'] などの列から値を取得するように column_name を使用する方法またはコマンドがあるかどうか疑問に思っていました。
これが Ruby の欠点であるかどうかはわかりません。データベースのテーブルを配列として扱い、それが column_name で指定できない理由かもしれません。