Похоже, что Oracle "alter session set EDITION .." не работает, используя параметр sessionInitStatement - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу выбрать вид, который виден при активации функции редакции Oracle.

alter session set EDITION=MYEDITION

view1
view1_edition1 => this view is only visible after the alter session statement above which is Oracle edition feature.

В TOAD все работает нормально. Я запускаю оператор alter session выше и могу успешно выбрать из этого представления.

Я пытаюсь добиться этого в Spark, но это не работает. выбор из возвращаемого объекта view1_edition1 не существует.

df = spark.read \
    .format("jdbc") \
    .option("url", "jdbc:oracle:thin:@db_server:1520/SERVICE") \
    .option("driver", "oracle.jdbc.driver.OracleDriver") \
    .option("dbtable", "(select name from schema1.view1_edition1)") \
    .option("user", "user") \
    .option("password", "password") \
    .option("sessionInitStatement","""alter session set EDITION=MYEDITION""") \
    .load()

Просто чтобы доказать, что редакция активна, я запускаю следующий выбор выше в spark.read, и он возвращает правильную редакцию как активную

  (
WITH a AS (SELECT name FROM SCHEMA1.TABLE1)
     ,b AS (SELECT SYS_CONTEXT('USERENV', 'SESSION_EDITION_NAME') AS 
     edition FROM DUAL)
SELECT name,edition
FROM a
CROSS JOIN b
)
...