首页 > 解决方案 > RPGLE 嵌入式 SQL“从最终表中选择...”在编译时抛出 SQL0029

问题描述

看似简单的 SQL 语句却抛出错误 SQL0029...“嵌入式语句中缺少位置 14 INTO 子句。”。
第一个明显的点是我的语句中没有缺少“INTO”,但 SQL 预编译器有时会提供与真正原因没有直接关系的消息。

我已将声明分解为最简单的步骤,并分阶段构建。我采取的所有步骤都已在 SQL 预编译器中编译。只有当我插入“从最终表中选择 UFVAID ...”时,它才会抛出错误。

该程序被定义为 SQLRPGLE,它包含其他不反对的 sql 语句。

我想从插入中检索的值是一个自动增量字段,将在后续插入中使用。

任何提示都会很棒。谢谢。

陈述

Exec Sql                                                     
  select UFVAID from final table (                           
  insert into elglvat                                        
    (UFVASE, UFTNAL, UFTNNU, UFVINT, UFVDEC, UFVALS,         
     UFVALM, UFVDAT, UFVTIM, UFVTSP)                         
  values                                                     
    (:UFVASE, :UFTNAL, :UFTNNU, :UFVINT, :UFVDEC, :UFVALS,   
     :UFVALM, :UFVDAT, :UFVTIM, :UFVTSP)                     
     ) ;                                            

标签: rpglerpgembedded-sql

解决方案


您缺少into将结果放入 RPG 变量的 select 子句的语句。不要与插入子句混淆into

Exec Sql                                                     
  select UFVAID 
    into :MyRpgVar // <===== Missing this line
  from final table (                           
  insert into elglvat                                        
    (UFVASE, UFTNAL, UFTNNU, UFVINT, UFVDEC, UFVALS,         
     UFVALM, UFVDAT, UFVTIM, UFVTSP)                         
  values                                                     
    (:UFVASE, :UFTNAL, :UFTNNU, :UFVINT, :UFVDEC, :UFVALS,   
     :UFVALM, :UFVDAT, :UFVTIM, :UFVTSP)                     
     ) ;                                           

推荐阅读