db2 如何在固定格式RPG中查询表并使用if-condition检查记录?

dauxcl2d  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(148)

例如,一个表##TAB有一个列#VALUE,其中包含'SDM'和'LB'作为条目。列的大小是12个字符。我想使用固定格式的RPG查询该表,然后在IF条件下进行比较。逻辑很简单,但我不确定语法。
如果它是自由格式,我可以简单地将记录放入游标中,在循环中获取数据,并在获得匹配的记录后离开。但是,我不确定是否可以使用固定格式的SQL,否则我将不得不做一个链(仍然不知道语法)。

exec sql                                      
    Declare C1 cursor for                      
      Select #VALUE from ##TAB;         

  exec sql                                      
    Open C1;                                    

  Dou sqlcod <> 0;                              
  exec sql                                      
    Fetch C1 INTO :valueRes;                      

    If (valueRes <> userVal); // userVal is what we get from user     
      Leave; //or set some flag to 0 to indicate               
    Endif;                

  Enddo;                  

  exec sql                
    Close C1;

或者我们可以通过一个子例程来完成,并返回true/false或1/0来指示是否找到了记录。
在发布答案时,请同时包含变量声明。

8i9zcol2

8i9zcol21#

你可以用固定的格式执行SQL语句。首先用C/EXEC SQL(从第6列开始),然后用C+表示所有的续行,最后用C/END-EXEC结束。而且结尾处没有分号。

C/exec sql
 C+  Declare C1 cursor for
 C+  Select #VALUE from ##TAB
 C/end-exec

相关问题