【问题标题】:Filling of varchar/char during FOREACH SELECT (loop)FOREACH SELECT(循环)期间填充 varchar/char
【发布时间】:2020-06-25 15:41:19
【问题描述】:

我对我的自编码 informix 函数有疑问。

有谁知道为什么函数的返回值为'x'? 每个头的 SELECT 语句应该返回 19 个数据集。 因此,我希望“x”与自身级联 19 次 所以函数的返回值为'xxxxxxxxxxxxxxxxxxxxx'

我写的函数是:

CREATE function mydb.my_function(spAuftNr INTEGER, spPos INTEGER, spUPos INTEGER, spTeileNr INTEGER) 
                     
  RETURNING VARCHAR;                                                                                        
  DEFINE spWs_kz CHAR(1);
  DEFINE spLfdnr CHAR(2);
  DEFINE spLaenge CHAR(10);                                                                                  
  DEFINE spBreite CHAR(10);
  DEFINE spWegfall CHAR(1);
  DEFINE spDicke CHAR(8);                                                                           
  DEFINE spReturn VARCHAR;    
  DEFINE tempy VARCHAR;
  
  LET spReturn = '';                                                                              
                                                                                                             
  FOREACH SELECT to_char(ws_kz),to_char(lfdnr),to_char(laenge),to_char(breite),to_char(wegfall),to_char(dicke) 
  INTO spWs_kz, spLfdnr, spLaenge, spBreite, spWegfall, spDicke from my_table where auftnr = spAuftNr and pos = spPos and u_pos = spUPos and teile_nr = spTeileNr
   

   LET spReturn = spReturn || 'x';
        
                                                                                                         
  END FOREACH                                                                                               
                                                                                                             
  RETURN (spReturn);                                                                                         
END function;     

我希望有人可以帮助我。 我想你知道我能做的下一步是什么 意识到这一点。

最好的问候 西蒙

【问题讨论】:

  • 还没有机会对此进行测试,但我认为问题在于当您将 spReturn 定义为 varchar 时,它默认为 varchar (1)。所以我认为,如果您将该定义更改为“定义 spReturn VARCHAR(20)”,那么您可能会看到所有的“x”值。您可能还需要更改“返回 varchar”部分。
  • 是的,我认为你是对的。奇怪,我尝试定义“返回 VARCHAR (255);”和“定义 spReturn VARCHAR (255);”。但是昨天还是一样的结果。今天我得到了我的 19x "x" s。我将立即发布更正的版本昨天是漫长的一天。

标签: foreach char informix varchar


【解决方案1】:

我不知道我昨天怎么了,jrenaut 是对的。代码实际上应该是这样的::

CREATE function mydb.my_function(spAuftNr INTEGER, spPos INTEGER, spUPos INTEGER, spTeileNr INTEGER) 
                     
  RETURNING VARCHAR(255);                                                                                        
  DEFINE spWs_kz CHAR(1);
  DEFINE spLfdnr CHAR(2);
  DEFINE spLaenge CHAR(10);                                                                                  
  DEFINE spBreite CHAR(10);
  DEFINE spWegfall CHAR(1);
  DEFINE spDicke CHAR(8);                                                                           
  DEFINE spReturn VARCHAR(255);    
  DEFINE tempy VARCHAR;
  
  LET spReturn = '';                                                                              
                                                                                                             
  FOREACH SELECT to_char(ws_kz),to_char(lfdnr),to_char(laenge),to_char(breite),to_char(wegfall),to_char(dicke) 
  INTO spWs_kz, spLfdnr, spLaenge, spBreite, spWegfall, spDicke from my_table where auftnr = spAuftNr and pos = spPos and u_pos = spUPos and teile_nr = spTeileNr
   

   LET spReturn = spReturn || 'x';
        
                                                                                                         
  END FOREACH                                                                                               
                                                                                                             
  RETURN (spReturn);                                                                                         
END function;     

再次感谢您的努力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多