|
Personal Oracle Lite compatibility issues |
Top Previous Next |
|
Direct Oracle AccessはPersonal Oracle Liteで走るアプリケーションを作るために使われます。 POLITE (like PL/SQL)では失われているOracle7からの機能は、ここでは説明されません。 より詳しい情報はPOLITEドキュメントを参照してください。次の章はPOLITEデータベースでDirect Oracle Access を使っている時に発生する互換問題を語ります。 SQL*Net / Net8 versions データベースに接続するために使われる必要のあるPOLITEは特定のバージョンのSQL*NetかNet8 と共に出荷されます。Version 3.0はSQL*Net 2.3が使われている必要があります。一方でversion 3.5 はNet8を通じてアクセスされますが。Direct Oracle AccessがPOLITEコネクションを検知する時、暗示的に要求されたSQL*NetかNet8 versionを使います。 Connect strings SQL*NetかNet8クライアントを通じてPOLITEデータベースにアクセスするために、 接続文字列としてODBCデータソースを指定しないといけません。 例えば、もしPOLITEデータベースがMYLITEDBと名づけられていると、TOracleSession.LogonDatabaseプロパティ内でODBC:MYLITEDBを接続文字列として指定しないといけません。 Error handling POLITEの返すエラーコードはOracle 7 or 8 serverから送られてくるものとは違います。 Oracle エラーコードは通常30021で、メッセージの2行目はなにがおかしかったのかを説明しています。 例えば、もし複製キーを挿入すると、次のエラーテキストを受け取ります: OCA-30021: エラー準備(error preparing)/ SQL命令の実行 [POL-3220] プライマリー/ユニークキー内の複製キー Oracleが報告するエラーコードは常に30021なので、特定の状況に対応するにはエラーテキストを解析する必要があります。 TOracleDataSetのOnTranslateMessageイベントはこの非互換に悩まされます。 常にエラーコード30021を受け取るだけでなく、制約名は常に空になります。もしこのイベントハンドラーを使いたいなら、エラーメッセージの2番目のメッセージを解析する必要があります。 ToracleDataSetのEnforceConstraintsオプションはプライマリー、ユニーク、そしてフォーリンキー制約に対してのみ機能します。 Check制約はPL/SQLブロックはPOLITEでサポートされていないため、評価されません。 Updateable datasets Oracle 7データベースに対して、ToracleDataSetを更新可能にするために、 SQLのselect命令にrowidを含むようにしないといけません。 POLITE内でのrowidのサポートはOracle7レベル次第ではないので、データセットに全てのプライマリーキーカラムを入れるようにしなくてはいけません。 その一方として、ユニークキーからカラムを含むことが出来ます。 Rowidは含めるものの、プライム、ユニークキーカラムは含めない場合、データセットは開こうとする時にエラーを発生します。 |