2016-04-26 3 views

答えて

0
DEFINE VARIABLE v-cnt AS INTEGER  NO-UNDO. 
DEFINE VARIABLE segment AS longchar NO-UNDO. 
DEFINE VARIABLE eachelement AS CHARACTER NO-UNDO. 

assign segment = "abc;bcd;efg;". 

DO v-cnt = 1 TO num-entries(segment, ";") - 1 : 

ASSIGN eachelement = string(entry(v-cnt, segment, ";")). 

FOR each table1 where table1.field1 matches "*" + eachelement + "*" no-lock: 

     MESSAGE table1.field1 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
END. 
END. 
1

あなたのソリューションは、[OK]を動作する一方で、オーバーヘッドの多くは、「それぞれの」スロークエリである場合は特に、そこにあります。必要な値のテンポラリテーブルを作成し、それをクエリに追加する方がよいでしょう。そして、あなたが 'マッチ'を使用しているとき、field1がまともなインデックスに入っていることを確認してください。そうしないと、パフォーマンスは恐ろしいものになります。

DEFINE VARIABLE v-cnt AS INTEGER  NO-UNDO. 
DEFINE VARIABLE segment AS longchar NO-UNDO. 

define temp-table tt-element no-undo 
    field element as character 
    index elidx is primary element. 

assign segment = "abc;bcd;efg;". 

do v-cnt = 1 to num-entries(segment,';'): 
    create tt-element. 
    tt-element.element = entry(v-cnt,segment,';'). 
end. 

for each tt-element, 
    each table1 no-lock 
    where table1.field1 matches '*' + tt-element.element + '*': 
    message table1.field1 
    view-as alert-box info buttons ok. 
end. 
関連する問題