2

目前,我正在使用 DataMapper 让 JRuby on Rails 应用程序访问 Oracle 数据库。我想知道是否有一个配置/例程来访问来自不同用户/模式的表,例如:

SELECT * FROM "SCHEMAXY"."TABLEXY";

我已经通过指定模式和表名来实现一个 hack 来完成这项工作,但我怀疑这是一个很好的解决方案。

class Tablexy
  include DataMapper::Resource
  storage_names[:default] = "SCHEMAXY.TABLEXY"
end

黑客(ish)

# Replace a dot in the name by a quoted one
# so "NAMESPACE.TABLE" gets "NAMESPACE"."TABLE"
module DataMapper
  module Adapters
    class OracleAdapter
      def quote_name(name)
          super.gsub('.', '"."')
      end
    end
  end
end

我希望在 DataMapper 中有一个集成的解决方案。

4

1 回答 1

1

如果您可以执行 SQLALTER SESSION命令,则以下内容将起作用并允许您在以下位置使用不合格的表名SCHEMAY

ALTER SESSION SET CURRENT_SCHEMA=SCHEMAXY;

如果这不可能,您可以创建一个SYNONYM

CREATE SYNONYM TABLEY FOR SCHEMAY.TABLEY;
于 2012-05-02T14:54:00.770 回答