从 Oracle SQL Developer 连接到 DB2 的 PL/SQL

PL/SQL from Oracle SQL Developer connecting to DB2

提问人:user11654732 提问时间:12/21/2020 最后编辑:APCuser11654732 更新时间:12/22/2020 访问量:440

问:

我已使用 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 吗?

PLSQL DB2 Oracle-SQLDextrient

评论

1赞 William Robertson 12/21/2020
我不了解 DB2,但我找到的文档页面“默认情况下,这些接口不启用 PL/SQL 语句执行。必须在 DB2 数据服务器上启用 PL/SQL 语句执行支持。
0赞 user11654732 12/21/2020
@WilliamRobertson:感谢您的回复!我已经按照 DB2 文档中的建议执行了“db2set DB2_COMPATIBILITY_VECTOR=800”,因此可以使用数据服务器接口编译和执行 PL/SQL“语句”。
1赞 mao 12/21/2020
为了完全兼容,不仅必须将 DB2_COMPATIBILITY_VECTOR db2-registry 变量设置为 ORACLE,并且实例被退回,而且还必须在这些更改之后创建数据库。这就是 Db2 知识中心中记录的内容。否则,兼容性会受到限制。
0赞 APC 12/22/2020
@毛 - 我可以建议你发表你的评论作为答案吗?它囊括了一些其他人可能觉得有用的知识,我们更喜欢回答的问题,而不是有评论但没有答案的问题。

答:

0赞 mao 12/22/2020 #1

使用 Db2-LUW 的 Oracle 兼容方式时,必须:

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

  • 使用 and 命令退回 Db2 实例,以便注册表变量生效。db2stopdb2start

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

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

对于当前发布的 Db2-LUW 版本,您无法将 Oracle 兼容性改造到先前创建的数据库。

评论

0赞 user11654732 5/18/2023
当然,在企业环境中,数据库的(重新)创建是一个相当大的障碍。