1.ストアドプロシージャを使用して、データセットを返します
Oracleのストアドプロシージャによって返されるデータセットは、REFカーソルタイプデータのパラメーターによって返され、データを返すパラメーターはタイプアウトまたはOUTタイプである必要があります。
ストアドプロシージャを定義するときにパラメーターのデータ型を直接指定できないため、REFカーソル、REFカーソルは最初に次の方法で再定義されます。
パッケージfuxjpackageを作成または交換します
タイプfuxjresultsetはref cursorです。
- 他のコンテンツを定義することもできます
fuxjpackageを終了します。
ストアドプロシージャをもう一度定義します。
手順を作成または交換updatefuxjexample(char in char、smc in char、out fuxjpackage.fuxjresultsetのpreccur)
として
始める
fuxjexample set mc = smcを更新すると、dm = sdm;
sql%rowcount = 0の場合
ロールバック;
のプレキュールを開きます
デュアルから「0」resを選択します。
それ以外
専念;
のプレキュールを開きます
デュアルから「1」resを選択します。
end if;
終わり;
そして
手順を作成または交換しますinsertsfuxjexample(char in char、smc in char、preccur in out fuxjpackage.fuxjresultset)
として
始める
fuxjexample(DM、MC)値(SDM、SMC)に挿入します。
専念;
のプレキュールを開きます
fuxjexampleから *を選択します。
終わり;
2。Delphiのデータセットを返すストアドプロシージャに電話してください
リターンデータセットを実行するストレージは、TSTOREDPROCまたはTSOREDPROCまたはTQUERYコントロールのパラメーターを介して呼び出されます。 ptinputoutput。
tstoredProcを使用して、updatefuxjexampleの関連する設定を次のように実行します。
オブジェクトStoredProc1:tstoredProc
databasename = 'useproc'
storedprocname = 'updatefuxjexample'
paramdata = <
アイテム
datatype = ftstring
name = 'sdm'
paramtype = ptinput
終わり
アイテム
datatype = ftstring
name = 'smc'
paramtype = ptinput
終わり
アイテム
datatype = ftcursor
name = 'preccur'
paramtype = ptinputoutput
値= null
終了>
終わり
実行方法は次のとおりです。
storedproc1.params.items [0] .asstring:= edit1.text;
storedproc1.params.items [1] .asstring:= edit2.text;
storedproc1.active:= false;
storedproc1.active:= true;
tqueryを使用して、insertFuxJexampleの関連する設定を次のように実行します。
オブジェクトquery1:tquery
databasename = 'useproc'
sql.strings =(
'始める'
'InsertFuxJexample(sdm => m、smc =>:mc、preccur =>:reccur);'
'終わり;')
paramdata = <
アイテム
datatype = ftstring
name = 'dm'
paramtype = ptinput
終わり
アイテム
datatype = ftstring
name = 'mc'
paramtype = ptinput
終わり
アイテム
datatype = ftcursor
name = 'Reccur'
paramtype = ptinputoutput
終了>
終わり
実行方法は次のとおりです。
query1.params.items [0] .asstring:= edit3./ parameter;
query1.params.items [1] .asstring:= edit4.text;
query1.active:= false;
query1.active:= true;
sql%rowcount = 0の場合
ロールバック;
のプレキュールを開きます
デュアルから「0」resを選択します。
それ以外
専念;
のプレキュールを開きます
デュアルから「1」resを選択します。
end if;
終わり;
そして
手順を作成または交換しますinsertsfuxjexample(char in char、smc in char、preccur in out fuxjpackage.fuxjresultset)
として
始める
fuxjexample(DM、MC)値(SDM、SMC)に挿入します。
専念;
のプレキュールを開きます
fuxjexampleから *を選択します。
終わり;
2。Delphiのデータセットを返すストアドプロシージャに電話してください
リターンデータセットを実行するストレージは、TSTOREDPROCまたはTSOREDPROCまたはTQUERYコントロールのパラメーターを介して呼び出されます。 ptinputoutput。
tstoredProcを使用して、updatefuxjexampleの関連する設定を次のように実行します。
オブジェクトStoredProc1:tstoredProc
databasename = 'useproc'
storedprocname = 'updatefuxjexample'
paramdata = <
アイテム
datatype = ftstring
name = 'sdm'
paramtype = ptinput
終わり
アイテム
datatype = ftstring
name = 'smc'
paramtype = ptinput
終わり
アイテム
datatype = ftcursor
name = 'preccur'
paramtype = ptinputoutput
値= null
終了>
終わり
実行方法は次のとおりです。
storedproc1.params.items [0] .asstring:= edit1.text;
storedproc1.params.items [1] .asstring:= edit2.text;
storedproc1.active:= false;
storedproc1.active:= true;
tqueryを使用して、insertFuxJexampleの関連する設定を次のように実行します。
オブジェクトquery1:tquery
databasename = 'useproc'
sql.strings =(
'始める'
'InsertFuxJexample(sdm => m、smc =>:mc、preccur =>:reccur);'
'終わり;')
paramdata = <
アイテム
datatype = ftstring
name = 'dm'
paramtype = ptinput
終わり
アイテム
datatype = ftstring
name = 'mc'
paramtype = ptinput
終わり
アイテム
datatype = ftcursor
name = 'Reccur'
paramtype = ptinputoutput
終了>
終わり
実行方法は次のとおりです。
query1.params.items [0] .asstring:= edit3./ parameter;
query1.params.items [1] .asstring:= edit4.text;
query1.active:= false;
query1.active:= true;
添付ファイル:データセットを返すストアドプロシージャを作成するための簡単なフレームワーク
1。
パッケージのテストパッケージを作成または交換します
タイプTestResultsetはRef Cursorです。
テストパッケージを終了します。
2。
手順テストを作成または交換します
(
out testpackage .testresultsetのプレキュール
))
として
始める
のプレキュールを開きます
[テーブルから]を選択します。
終わり;