私の友人の多くがで複数のデータセットを取得unidacでクエリを実行する方法を尋ねましたか?
実際には、この問題はunidac長いこの機能をサポートし、非常にシンプルですが、多くの人が勉強していません。
今日について簡潔には、中unidacに複数のデータセットを取得するクエリを実行します。必要なすべてのデータベースのサポートのまず、もし
それをサポートしていないデータベースは、unidacは達成するための方法はありません。
今日では、SQL Serverの2014ために、例えば、この機能を実装する方法について話しています。
まず、中uniqueryで次のクエリを実行します。
手順TForm2.Button7Click(送信者:TObjectを); 開始 cx.SQL.Clearを。 cx.SQL.Add(' DWB DからのSELECT * ' ); cx.SQL.Add(' FJRYB F SELECT * FROM ' ); cx.Open; エンド ;
私たちは直接、コードのこの部分を実行し、通常の文になる場合明らかに、select文は、最初の結果を返します。
だから、どのように我々は、データそれの第2のセットを得るのですか?非常に単純な
手順TForm2.Button8Click(送信者:TObjectを); 開始し ている場合 ではない cx.OpenNext その後、 終了。 エンド ;
私達はちょうどOpenNextプロセスを呼び出します。第2のデータセットがある場合、現在のデータセットは、第二のデータセットに移動させます
あなたがopennext行う場合のみ、二つのデータセットので、もう一度収集したデータを閉じます。何も示しています。
その後、再び、それはopennextが環状であることを示す第1のデータセットを示すことができます。
似ているストアドプロシージャではもちろん。
私たちは、最初のストアドプロシージャを記述します。
CREATE PROCEDURE dbo.MYSUM @sumok INTの出力は、 AS BEGIN SET @sumok = 1 + 2 SELECT * FROM DWBは、D SELECT * FROM FJZB F END GO
我々は2つのデータセット、一つの出力パラメータを返すようにしたいです。
procedure TForm2.Button6Click(Sender: TObject); var i:integer; tablelist:Tlist<Tdataset> ; begin sp.Params[1].ParamType:=ptInputOutput; sp.Params[1].DataType:=ftInteger; sp.Params[1].AsInteger:=10; sp.Execute; repeat showmessage( sp.Fields[1].AsString); until not sp.OpenNext; i:=sp.Params[1].AsInteger; showmessage(i.ToString); end;
运行结果为:
说明一切运行正常。