带有Oracle数据库和模式的Ruby DBI的语法

时间:2013-06-13 15:12:58

标签: ruby oracle schema dbi

我曾经能够像db.do("select * from table")那样使用dbi并得到我需要的结果,但是我现在必须使用模式来访问我需要的表格,上面的行会给我dbi错误:< / p>

DBI::ProgrammingError: ORA-00942: table or view does not exist
    from stmt.c:312:in oci8lib.so
    from C:/ruby/lib/ruby/gems/1.8/gems/ruby-oci8-2.0.6-x86-mingw32/lib/oci8/oci8.rb:288:in `exec'
    from C:/ruby/lib/ruby/gems/1.8/gems/ruby-oci8-2.0.6-x86-mingw32/lib/dbd/OCI8.rb:354:in `execute'
    from C:/ruby/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi/base_classes/database.rb:96:in `execute'
    from C:/ruby/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi/base_classes/database.rb:114:in `do'
    from C:/ruby/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi/handles/database.rb:106:in `do'
    from (irb):35
    from ♥:0

我可以使用此db.do("select * from schema.table")访问该表,但我不想更改tableschema.table的每一行。

请告诉我如何在不改变任何行的情况下让我的脚本工作?

1 个答案:

答案 0 :(得分:0)

在运行任何其他语句之前尝试运行db.do(“SET SCHEMA SCHEMA_NAME”)

编辑:正确的语法是: db.do(“ALTER SESSION SET CURRENT_SCHEMA = SCHEMA_NAME”)

这会将您的默认架构更改为您希望在会话期间使用的架构