【问题标题】:PL/SQL from Oracle SQL Developer connecting to DB2来自 Oracle SQL Developer 的 PL/SQL 连接到 DB2
【发布时间】:2020-12-21 10:56:07
【问题描述】:

我已使用 DB2 ODBC 驱动程序从 Oracle SQL Developer 19.4.0.354 成功连接到 DB2 数据库。 SQL 脚本工作得很好。

现在我也想执行 PL/SQL 脚本,但是简单的示例脚本失败了。:

set serveroutput on
DECLARE
message  varchar2(20):= 'Hello, World!';
BEGIN
dbms_output.put_line(message);
END;

它以这样的方式失败,以至于 PL/SQL 代码似乎根本不被接受:

DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=DECLARE
message  varchar2(20):= 'Hell;BEGIN-OF-STATEMENT;<create_view>, DRIVER=4.26.14

此设置通常支持 PL/SQL 吗?

【问题讨论】:

  • 我不知道 DB2,但我发现的 documentation page'PL/SQL 语句执行默认情况下未从这些接口启用。必须在 DB2 数据服务器上启用 PL/SQL 语句执行支持。'
  • @WilliamRobertson:感谢您的回复!我已经按照 DB2 文档中的建议执行了“db2set DB2_COMPATIBILITY_VECTOR=800”,因此可以使用数据服务器接口编译和执行 PL/SQL 语句。
  • 为了完全兼容,不仅必须将 DB2_COMPATIBILITY_VECTOR db2-registry 变量设置为 ORACLE,并且实例被退回,而且还必须在 AFTER 之后创建 数据库 这些变化。这就是 Db2 知识中心中记录的内容。否则兼容性是有限的。
  • @mao - 我可以建议您发表您的评论作为答案吗?它封装了一些其他人可能会觉得有用的知识,我们更喜欢有答案的问题而不是有 cmets 但没有答案的问题。

标签: oracle plsql db2 oracle-sqldeveloper


【解决方案1】:

在使用 Db2-LUW 的 Oracle 兼容模式时,需要:

  • 使用 db2set 命令设置 Db2-registry-variable DB2_COMPATIBILITY=ORA。

  • 使用 db2stopdb2start 命令反弹 Db2 实例,使注册表变量生效。

  • 完成上述两个步骤后创建一个新数据库(使用 db2 create database command),以便 Oracle 特定的数据类型和其他功能可用。

如果您只更改注册表变量并退回 Db2 实例但使用预先存在的数据库,那么您将无法获得所有已实现的 Oracle 兼容性功能!这在线记录在 Db2-Knowledge-Centre 中。

使用当前发布的 Db2-LUW 版本,您无法将 Oracle 兼容性改进到以前创建的数据库。

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 2010-12-22
    • 2023-03-11
    • 2019-04-08
    • 1970-01-01
    • 2015-09-16
    • 2021-09-11
    • 2014-07-10
    相关资源
    最近更新 更多