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



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

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

  1. Crete a GLOBAL TEMPORARY TABLE

  2. 将数据插入此全局临时表

  3. 通过以下方式更新此全局临时表上的数据的某些逻辑与其他桌子连接。

  4. 从全局温度表中选择值

当我使用分号分隔每个步骤时,我会收到一个错误,说分号不被识别为查询分隔符…下面是查询的片段

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:令牌;无效。有效标记:结束语句。原因…..:在标记;处检测到语法错误;。代币不是有效的令牌。有效令牌的部分列表为。此列表假定该语句是正确的直至代币。错误可能在语句的早期,但到目前为止,该语句的语法似乎是有效的。恢复…:执行以下一项或多项操作,然后重试请求:--验证令牌区域中的SQL语句;。更正该语句。错误可能是缺少逗号或引号,它可能是拼写错误的单词,也可能与条款。——如果错误标记为,请更正SQL语句,因为它未以有效子句结尾。

DB2 for i SQL每次调用只准备和执行[execute IMMEDIATE]一条动态语句。尽管我还没有机会使用该功能,但自从DB2forIBMi7.1以来,显然支持接受动态复合语句。复合语句中的语句分隔符[用于声明性语句和过程性语句]是分号

http://www.itjungle.com/fhg/fhg011514-story02.html
DB2 For i中的动态复合语句
发布时间:2014年1月15日
作者Michael Sansoterra

可能已经考虑到了这一点,但您的"select"关键字缺少一个"c"。也可以尝试在select语句后面加一个分号。

相关内容

  • 没有找到相关文章

最新更新