【问题标题】:Access tables from different schema/user using DataMapper使用 DataMapper 从不同的模式/用户访问表
【发布时间】:2012-05-11 17:01:59
【问题描述】:

目前,我正在让 JRuby on Rails 应用程序使用 DataMapper 访问 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 中有一个集成的解决方案。

【问题讨论】:

    标签: ruby-on-rails oracle schema jruby datamapper


    【解决方案1】:

    如果您可以执行 SQL ALTER SESSION 命令,以下将起作用并允许您在 SCHEMAY 中使用不合格的表名:

    ALTER SESSION SET CURRENT_SCHEMA=SCHEMAXY;
    

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

    CREATE SYNONYM TABLEY FOR SCHEMAY.TABLEY;
    

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 2019-06-29
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      相关资源
      最近更新 更多