gpt4 book ai didi

sql - DB2 匿名 SQL block 的有效语法是什么?

转载 作者:行者123 更新时间:2023-12-04 18:00:42 24 4
gpt4 key购买 nike

我有 DB2 v9.7 客户端驱动程序来访问安装在 Z/OS 环境中的 DB2 实例。我试图在 Toad for DB2 4.7 的帮助下编写和执行匿名过程。不幸的是,互联网上给出的示例代码都没有解决语法错误。无论我尝试什么,即使是非常简单的尝试,也无法正常工作。我很好奇是否有 Toad 的执行模式或我在尝试时错过的东西。以下是我收到的尝试和语法错误:

DECLARE
somechr VARCHAR2(255);
BEGIN
somechr:='some value';
END;

上面的示例抛出这些错误:

  • DB2 数据库错误:错误 [42601] [IBM][DB2] SQL0104N 在“”之后发现了意外的标记“VARCHAR2”。预期的标记可能包括:“TABLE STATEMENT,. SCROLL INSENSITIVE SENSITIVE ASENSITIVE”。 SQLSTATE=42601
  • DB2 数据库错误:错误 [42601] [IBM][DB2] SQL0104N 在“”之后发现了意外的标记“SOMECHR”。预期的标记可能包括:“DECLARE”。 SQLSTATE=42601
  • DB2 数据库错误:错误 [42601] [IBM][DB2] SQL0104N 在“”之后发现意外标记“END-OF-STATEMENT”。预期的标记可能包括:“DECLARE”。 SQLSTATE=42601

当我更改“某些值”时,最后一个消失;到“一些值(value)”;--

一些示例使用以下语法:

BEGIN
DECLARE somechr VARCHAR2(255);--
somechr:='some value';
END;

但是,这种语法也会抛出异常:

  • DB2 数据库错误:错误 [42601] [IBM][DB2] SQL0104N 在“”之后发现了意外的标记“SOMECHR”。预期的标记可能包括:“SECTION”。 SQLSTATE=42601

我终于试过了:

BEGIN
DECLARE SECTION BEGIN
somechr VARCHAR2(255);--
END;
somechr:='some value';--
END;

得到这些:

  • DB2 数据库错误:错误 [42612] [IBM][DB2] SQL0084N EXECUTE IMMEDIATE 语句包含 SELECT 或 VALUES 语句。 SQLSTATE=42612
  • DB2 数据库错误:错误 [42601] [IBM][DB2] SQL0104N 在“”之后发现了意外的标记“SOMECHR”。预期的标记可能包括:“GET SQL SAVEPOINT HOLD FREE ASSOCIATE”。 SQLSTATE=42601

除了这些尝试之外,一些人注意到在代码开头使用“--#SET TERMINATOR @”,但它对上述所有示例都没有帮助。我已经通过更改';'进行了尝试为所有组合添加符号“@”(有或没有“--#SET TERMINATOR @”语句),但错误似乎并没有消失。

最佳答案

我使用 DB2 LUW,而不是 z/OS。也就是说,您可以试试这个:

BEGIN
DECLARE V_SOMECHR NVARCHAR(255);

SET V_SOMECHR = 'some value';
END

我在 DB2 LUW 中的经验是,声明必须在 BEGIN block 内,并且必须在前面,但没有标题说明它是一个 DECLARE 部分。您可以在最后一次声明之后立即放置您的程序代码。不确定在 z/OS 中是否会出现这种情况。

关于sql - DB2 匿名 SQL block 的有效语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35829055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com