Ruby - пл sql гем. Как управлять несколькими подключениями - PullRequest
1 голос
/ 17 июня 2020

У меня проект ruby, без рельсов. В моем проекте я выделяю некоторые pl sql, используя ruby_pl sql gem, например:

require 'ruby_plsql' 
plsql.connection = OCI8.new('user','password',"//host:1521/my-db") # This only execute one time
def execute_pl
    ds = plsql.my_package.my_procedure(company, country) # This execute many time, reuse the connection
    ds
end

На этом этапе все работает нормально. Теперь, для некоторых требований, y нужно выполнить pl sql в другом db, это зависит от какого-то параметра.

Если я сделаю это:

plsql.connection = OCI8.new('user','password',"//host2:1521/my-other-db")

С этого момента все pl sql будет выполняться в другой базе данных, и это не идея, идея состоит в том, что он может выполняться динамически в любой из двух баз данных, без необходимости создавать соединение каждый раз, когда вы go запускаете some pl sql.

Как мне создать другой метод, который выполняет pl sql в другой базе данных, без необходимости создавать соединение каждый раз, когда вы go запускаете некоторый pl sql?

1 Ответ

2 голосов
/ 18 июня 2020

Для пользователя другое соединение с использованием pl sql gem, мы можем использовать псевдоним:

plsql(:my_alias).connection = OCI8.new('user','password',"//host2:1521/my-other-db")

И методы:

def execute_pl
    ds = plsql.my_package.my_procedure(company, country)
    ds
end
def execute_pl_in_other_db
    ds = plsql(:my_alias).my_package.my_procedure(company, country)
    ds
end

end

...