Oracle製品のミドルウェアの流れ
Oracle GlueからOracle Objects for OLE移行ガイド
〜OracleGlueを懐かしむ
古くて新しい、そうそれがミドルウェア。
製品としてのライフサイクルも、息の長いものとなるのは当然のことだろう。
中でもVisualBasicと関係が深いのが、昔Glueに今oo4o。
では今回は、移行に際してのヒントなどを少しだけ紹介しよう。
PCDN OracleWG 田中久 TANAKA,Hisashi
Oracle接続にあたっての宣言部分 Oracle Glueの使用するにあたって欠かせなかったのが宣言部分。
Declare Function EXECSQL Lib "GLUESQL.DLL" (ByVal S As String) As Integer
Declare Sub GLUEINIT Lib "VBGLUE.DLL" ()
Declare Sub GLUESETNUMBER Lib "VBGLUE.DLL" (ByVal S As String, ByVal i As Integer, ByVal f As Double)
Declare Sub GLUESETSTRING Lib "VBGLUE.DLL" (ByVal S As String, ByVal i As Integer, ByVal S As String)
Declare Sub GLUEGETNAMELIST Lib "VBGLUE.DLL" (hCtl As Any)
Declare Sub GLUEREGISTERCONTROL Lib "VBGLUE.DLL" (Ctl As Control)
Declare Function GLUEGETNUMBER Lib "VBGLUE.DLL" (ByVal S As String, ByVal i As Integer) As Double
Declare Function GLUEGETSTRING Lib "VBGLUE.DLL" (ByVal S As String, ByVal i As Integer) As String
Declare Function GLUEGETSIZE Lib "VBGLUE.DLL" (ByVal S As String) As Double
Function EXSQL (ByVal SQLTEXT As String, ByVal locpost As String)
Dim locERR As Integer
Dim locerr2 As Integer
Dim locmsg As String
locERR = EXECSQL(locs)
Select Case locERR
Case Is <> 0
locerr2 = EXECSQL("get message for " + Str$(locERR) + "into :msg:")
locmsg = GLUEGETSTRING("msg", 0)
MsgBox "エラーが発生しました。" + Chr(13) + locmsg, 16, locpost
End Select
EXSQL = locERR
End Function
などといったよく使う部分は、共通モジュールとして定義していたに違いない。
そして、Oracle Objects for OLE(以降はoo4oと記す)これらの呪文を記述する必要はもうないのだ。
逆にコードをゴリゴリ書く人たちにとって、Declare してきた時代は既に懐かしい過去のことなのだ。
Oracleへの接続 次が、実際にOracleに接続する部分。
Declareした Sub GLUEINITのあと、
DB_STATS = EXSQL("connect " & Trim$(glbORA_USER), "データベース接続")
などといったコードをForm Loadのところに書いていたことだろう。
そして、oo4oの場合、下記の呪文を唱えるだけで同様のことが可能となる。
'OraSession and OraDatabase are global
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(Trim$(lblDBNAME.Caption), Trim$(lblCONNECT.Caption), 0&)
SQL実行部分 では、実際にOracleに対してSQLを投げる部分。
1.GlueSetStringやGlueSetNumberで、VB上の値をOracleコンテナに変換。
2.上記のEXSQLファンクションを実行
3.GlueGetStringやGlueGetNumberで、OracleコンテナからVB上の値に戻す。
こういった手続きを踏んでいたか、それともGlueRegisterControlを使って直接VB上のコントロールをOracleコンテナとして使用していたことだろう。
そして、oo4oの場合だが、
OraDatabase.Parameters("INP_para").Value
などと記述するだけで同じことが出来る。
OraDatabase.Parameters.Addでの使用宣言、OraDatabase.Parameters.Removeでの開放が必要とは言うものの、
ストアドプロシージャ化されていれば、いかに簡単に移行できるかといったところがご理解いただけるはずだ。
最後に、16ビットアプリケーションの正しい移行方針とは
ここまでGlueとoo4oとの違いを説明してきた。といっても、これはどう書きかえれば動くのかといった部分であり、どうやれば移行がうまくいくかといった説明ではない。
だからと言って決して悲観的に考えてはいけない。
従来システムとして16ビット環境で開発されたソフトウェア資産の中で、データ構造部分とストアドプロシージャと、そして何よりも動くサンプルとしてのWindowsアプリケーションがあるではないか。
こういった部品の中で健全な部分だけを正当に継承していけば、ユーザーにとって本当に良いシステムでありつづけることはそんなに難しいことではない訳である。
Oracle WorkGroup
int21 ホームページ | PCDN ホームページ
![]()
Copyright (c) 1998 TANAKA,Hisashi & PCDN All Rights Reserved.
For questions or comments, please send mail to: pcdn@int21.co.jp