Oracle "alter session set EDITION.." 似乎无法使用选项 sessionInitStatement

Oracle "alter session set EDITION.." doesn't seems to work using option sessionInitStatement

我想从激活 Oracle 版本功能时可见的视图中select。

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 语句,我可以从该视图成功 select。

我正尝试在 Spark 中实现这一点,但它不起作用。 select来自 view1_edition1 return 对象不存在。

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 中触发了上面的 select,它 return 的正确版本是有效的

  (
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
)

在从 Oracle JDBC 数据源

获取连接之前,尝试使用 Java 属性设置版本名称,而不是更改会话

例如, p.put("oracle.jdbc.editionName", "MyEdition"); ... ods.setConnectionProperties(p);