0

わかりましたので、少し問題があります... 私のプロジェクトでは、Oracle SQL Server を使用しています。データベースでは、他のユーザー テーブルのいくつかにアクセスできます。

Tables:
  |-bla
  |-bla
Users:
  |-otherUser (let's just call him that)
      |-Tables:
          |-aTable

Oracleでは、aTable私が使用するテーブルにアクセスするためにSELECT * FROM otherUser.aTable

現在、MS Sync f/w を使用して OracleDB からのデータを同期する MS SQL CE データベースもあります。そして CE db で - 同期後 - テーブルを取得しますotherUser.aTable。これは良さそうなので、CE にはユーザーの概念がなくても、同じテーブルを追加するだけです。

しかし、問題は、CE で Oracle と同じ SQL クエリを呼び出すと、The table name is not validエラーが発生することです。代わりに、テーブルの内容を取得したい場合、私が見つけた 2 つの方法はotherUser.aTable、[] または "" で囲みます。

ただし、どちらもOracleでは機能しないようです。[] は不正な名前のようで、"" は (他のユーザーではなく) まさにその名前のテーブルを検索しているようです。

では、一方の方法を Oracle で使用し、もう一方の方法を CE で使用しないのはなぜですか? NHibernateもORMとして使用していますが、両方のデータベースに同じテーブル名が必要です...

Oracle でユーザーを操作し、CE でのみ機能する、テーブル名をカプセル化する 3 番目の方法はありますか? または、この問題を解決する他の方法はありますか?

4

1 に答える 1

0

MS SQL の経験はありませんが、Oracle 側のシノニムで解決できる問題のようです。Oracle で otherUser.aTable のシノニム「otherUser.aTable」を作成してみてください。

于 2013-10-03T11:48:07.183 に答える