首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从IBM i (AS400)中提取数据的SQL查询--如何分离多个查询

从IBM i (AS400)中提取数据的SQL查询--如何分离多个查询
EN

Stack Overflow用户
提问于 2015-03-30 15:46:50
回答 2查看 1.2K关注 0票数 1

AS400中用于在同一个SQL中运行多个语句的查询分隔符是什么。我们在MS中有GO语句,类似地,我虽然在AS400中使用分号来分隔多个查询,但由于某种原因,它不起作用。

实际上,在这个查询中有多个步骤

  1. Crete全局临时表
  2. 将数据插入到此全局临时表
  3. 通过与其他表连接来更新此全局临时表上的数据的一些逻辑。
  4. 从此全局临时表中选择值

当我使用分号分隔每一步时,都会出现错误,说明分号不被识别为查询分隔符…。下面是查询的片段

代码语言:javascript
复制
DECLARE GLOBAL TEMPORARY TABLE SESSION.FinalRes
(
       SLSTRTY  CHAR(4)
       ,SLSMAN CHAR(5)
       ,CSTNAM CHAR(30)
       ,CustN  CHAR(16)
       ,ADR1 CHAR(30)       
       ,ADR4 CHAR(30)
       ,"STATE" CHAR(2)
       ,ZIPCD CHAR(12)
       ,DTEADDED DATE
       ,SalesCM DECIMAL(22,7)
       ,SalesYTD DECIMAL(22,7)
       ,SalesPY DECIMAL(22,7)
       ,EXTGPCM DECIMAL(22,7)
       ,EXTGPYTD DECIMAL(22,7)
       ,EXTGPPY DECIMAL(22,7)
       ,GMYTD DECIMAL(22,7)
       ,GMCM DECIMAL(22,7)
       ,GMPY DECIMAL(22,7)
       ,SalesPYM DECIMAL(22,7)
       ,SalesPYTD DECIMAL(22,7)
       ,STATIND CHAR(1)
       ,CSTCLS CHAR(3)
       ,CSort NUMERIC(5)
) WITH REPLACE ON COMMIT PRESERVE ROWS ;

SELET * from SESSION.FinalRes

--这是我尝试执行查询时遇到的错误

SQL0104:令牌;无效。有效标记:语句结束。原因。。。。。::在token检测到语法错误;令牌;不是有效的令牌。有效令牌的部分列表是。此列表假设语句在令牌之前是正确的。该错误可能在语句的前面,但语句的语法在此之前似乎是有效的。恢复正常。。。执行一个或多个以下操作并再次尝试请求:--验证令牌区域中的SQL语句;更正陈述。错误可能是缺少逗号或引号,可能是拼写错误的单词,也可能与子句的顺序有关。--如果是错误标记,则更正SQL语句,因为它没有以有效子句结尾。

EN

回答 2

Stack Overflow用户

发布于 2015-04-18 12:04:19

DB2 for i将准备并立即执行每次调用只执行一条动态语句。虽然我还没有机会使用这个特性,但是自从IBMI7.1的DB2之后,显然就有了对动态复合语句的支持。复合语句中声明语句和过程语句的语句分隔符是分号。

http://www.itjungle.com/fhg/fhg011514-story02.html

动态复合语句在DB2 For i中的应用

发布日期:2014年1月15日

迈克尔·桑索特拉

票数 1
EN

Stack Overflow用户

发布于 2015-05-28 04:07:20

这可能已经说明了,但您的“select”关键字缺少一个'c‘。还可以尝试在select语句之后添加一个附加分号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29350579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档