2017-08-23 11 views
1

おはよう:公開されたクエリの動的クエリ

すぐ質問、私はopengeで動的クエリを実行できますか?

例:

def temp-table tt-num1 
field f1 as int 
field f2 as int. 

def temp-table tt-num2 
field f1 as int 
field f2 as int. 

def temp-table tt-num3 
field f1 as int 
field f2 as int. 

私はこのような何かに見えることであろう必要があります。

procedure repeat-query: 
for each 'variable that contains table-name' no-lock. 

disp f1 f2. 

end. 
end procedure. 

または

がどのように私はこのために進んでください私の問題解決することができる他の方法を?私はインターネットで見つかった動的クエリをチェックしようとしましたが、運が悪いです。前もって感謝します。

答えて

4

https://documentation.progress.com/#page/progdocindex%2Fopenedge.htmlに直接行くと、OpenEdgeのすべてのドキュメントを見つけることができます。動的クエリなど。

私は何をしようとしているのか正確には分かりませんが、ここでは動的クエリの例があります。ステファンDrissenは非常に有効なコメントに言及したよう

DEFINE TEMP-TABLE tt-num1 NO-UNDO 
    FIELD f1 AS INTEGER 
    FIELD f2 AS INTEGER. 

DEFINE TEMP-TABLE tt-num2 NO-UNDO 
    FIELD f1 AS INTEGER 
    FIELD f2 AS INTEGER. 

DEFINE TEMP-TABLE tt-num3 NO-UNDO 
    FIELD f1 AS INTEGER 
    FIELD f2 AS INTEGER. 


CREATE tt-num1. 
ASSIGN 
    tt-num1.f1 = 1 
    tt-num1.f2 = 1. 

CREATE tt-num1. 
ASSIGN 
    tt-num1.f1 = 1 
    tt-num1.f2 = 2. 

CREATE tt-num1. 
ASSIGN 
    tt-num1.f1 = 2 
    tt-num1.f2 = 1. 

CREATE tt-num1. 
ASSIGN 
    tt-num1.f1 = 2 
    tt-num1.f2 = 2. 

DEFINE VARIABLE hQuery AS HANDLE  NO-UNDO. 
DEFINE VARIABLE cBuffer AS CHARACTER NO-UNDO. 
DEFINE VARIABLE cField AS CHARACTER NO-UNDO. 
DEFINE VARIABLE iValue AS INTEGER  NO-UNDO. 

ASSIGN 
    cBuffer = "tt-num1" 
    cField = "f1" 
    iValue = 1. 

CREATE QUERY hQuery. 

hQuery:ADD-BUFFER(cBuffer). 
hQuery:QUERY-PREPARE("for each " + cBuffer + " where " + cBuffer + "." + cField + " = " + STRING(iValue)). 
hQuery:QUERY-OPEN(). 

queryLoop: 
REPEAT: 
    hQuery:GET-NEXT(). 

    IF hQuery:QUERY-OFF-END THEN LEAVE queryLoop. 

    DISPLAY hQuery:GET-BUFFER-HANDLE(1):BUFFER-FIELD(cField):BUFFER-VALUE. 
END. 
hQuery:QUERY-CLOSE(). 

DELETE OBJECT hQuery. 

:ループは、よりコンパクトにすることができる:返信用

DO WHILE hQuery:GET-NEXT(): 
    /* Code goes here */ 
END. 
+0

感謝。理解しやすい。 – noob

+2

私はしばらくの間、次の段階に進むことを好む - 物事をきれいに保ち、問合せオフの必要はない。 hQuery:get-next(): ディスプレイ... 終了時に繰り返します。 –

+0

@StefanDrissenはレコードを作成するために動的クエリを使用できますか? CREATE tt-num1のように、バッファでこれを行うことはできますか? – noob

関連する問題