【问题标题】:How to alter session before running sql through datastage job如何在通过datastage作业运行sql之前更改会话
【发布时间】:2019-11-20 12:37:12
【问题描述】:

在我的 datastage 作业中使用的 oracle 连接器中执行主 sql 之前,我需要更改会话。

我尝试从下面的 sql 选项卡之前更改会话。但这似乎不起作用 更改会话集 star_transformation_enabled=TRUE;

当我从 sql developer 更改会话并运行我的主 sql 时,它会在 20 分钟内执行,但从 datastage 作业中,该作业运行时间更长,超过 20 小时。它让我感觉我的更改会话无法正常工作数据阶段。

【问题讨论】:

  • 如果您只想修改一个 SQL 语句,最好更改每个语句的设置,而不是每个会话。可以直接修改SQL,在第一个关键字后面加上/*+ STAR_TRANSFORMATION */吗?
  • 您的主 SQL 是单个 SQL 还是 PL/SQL 块?
  • @JonHeller 谢谢! :我尝试使用提示 /*+ STAR_TRANSFORMATION */ 它也不起作用。
  • @Tejash----ORA-00980:我正在使用 SQL。但我尝试在 ds 作业中的 sql 语句之前在 PL/SQL 块中使用 alter session,但没有成功。
  • datastage 使用的用户 ID 是否与您在 SQL*Developer 中使用的用户 ID 相同?如果没有,则可能需要授予该用户 ID ALTER SESSION 权限。

标签: oracle datastage


【解决方案1】:

好的,我知道你的问题了。

您可以使用以下技术更改PL/SQL block 中的会话。

BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''DD-MON-RRRR HH24:MI:SS'' ';
DBMS_OUTPUT.PUT_LINE('1 --> ' || SYSDATE);
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''DD/MON/RRRR HH24:MI:SS'' ';
DBMS_OUTPUT.PUT_LINE('2 --> ' || SYSDATE);
END;
/

--
Output
--

dbms_output:
1 --> 13-JUL-2019 04:52:58
2 --> 13/JUL/2019 04:52:58

db<>fiddle demo

干杯!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多