1. Verwenden Sie gespeicherte Prozeduren, um Datensätze zurückzugeben
Der durch gespeicherte Prozeduren in Oracle zurückgegebene Datensatz wird durch Parameter von Ref Cursor -Datendaten zurückgegeben, und die Parameter, die Daten zurückgeben, sollten vom Typ oder in Out -Typen ausgesetzt sein.
Da der Datentyp des Parameters bei der Definition einer gespeicherten Prozedur nicht direkt angegeben werden kann: Ref Cursor, wird der Ref Cursor zuerst nach der folgenden Methode neu definiert:
Erstellen oder Ersetzen von Paket Fuxjpackage ist
Typ fuxjresultset ist Ref Cursor;
-Sie können auch andere Inhalte definieren
Ende fuxjpackage;
Definieren Sie das gespeicherte Verfahren erneut:
Procedure updateFuxjexample erstellen oder ersetzen (SDM in char, smc in char, präccur in out fuxjpackage.fuxjresultSet)
als
Beginnen
Aktualisieren Sie fuxjexample set mc = smc wobei dm = sdm;
Wenn sql%rowCount = 0 dann
Rollback;
Preccur für
Wählen Sie '0' res von Dual;
anders
begehen;
Preccur für
Wählen Sie '1' res von Dual;
Ende wenn;
Ende;
Und
Erstellen oder Ersetzen von Prozeduren InsertFuxjexample (SDM in char, smc in char, präccur in out fuxjpackage.fuxJresultSet)
als
Beginnen
In Fuxjexample (DM, MC) -Werte (SDM, SMC) einfügen;
begehen;
Preccur für
Wählen Sie * aus fuxjexample;
Ende;
2. Rufen Sie die gespeicherte Prozedur auf, die den Datensatz in Delphi zurückgibt
Der Speicher, der den Rückgabedatensatz ausführt, kann über die Steuerung des Datensatzes über die Parameter des Parameters des Parameters aufgerufen werden. ptinputoutput.
Verwenden Sie TstoredProc, um die relevanten Einstellungen von UpdateFuxjexample als auszuführen:
Objekt StoredProc1: TstoredProc
DatabaseName = 'UseProc'
LagedProcname = 'updatefuxjexample'
Paramdata = <
Artikel
DataType = ftstring
Name = 'sdm' '
Paramtype = ptinput
Ende
Artikel
DataType = ftstring
Name = 'smc'
Paramtype = ptinput
Ende
Artikel
DataType = ftcursor
Name = 'preccur' '
Paramtype = ptinputoutput
Wert = null
Ende>
Ende
Die Ausführungsmethode lautet:
Speicherproc1.Params.items [0] .Assstring: = edit1.text;
LagedProc1.Params.items [1] .Assstring: = edit2.text;
GelagertProc1.Active: = false;
SpeichernProc1.Active: = True;
Verwenden Sie TQuery, um die relevanten Einstellungen von InsertFuxjexample als:
Objektabfrage1: TQuery
DatabaseName = 'UseProc'
Sql.strings = ((
'beginnen'
'InsertFuxjexample (SDM => m, smc =>: MC, preccur =>: reccur);'
'Ende;')
Paramdata = <
Artikel
DataType = ftstring
Name = 'dm'
Paramtype = ptinput
Ende
Artikel
DataType = ftstring
Name = 'MC'
Paramtype = ptinput
Ende
Artikel
DataType = ftcursor
Name = 'reccur' '
Paramtype = ptinputoutput
Ende>
Ende
Die Ausführungsmethode lautet:
Query1.params.items [0] .Assstring: = edit3.text; // den Parameter zuweisen;
Query1.params.items [1] .Assstring: = edit4.text;
Query1.aktiv: = false;
Query1.aktiv: = true;
Wenn sql%rowCount = 0 dann
Rollback;
Preccur für
Wählen Sie '0' res von Dual;
anders
begehen;
Preccur für
Wählen Sie '1' res von Dual;
Ende wenn;
Ende;
Und
Erstellen oder Ersetzen von Prozeduren InsertFuxjexample (SDM in char, smc in char, präccur in out fuxjpackage.fuxJresultSet)
als
Beginnen
In Fuxjexample (DM, MC) -Werte (SDM, SMC) einfügen;
begehen;
Preccur für
Wählen Sie * aus fuxjexample;
Ende;
2. Rufen Sie die gespeicherte Prozedur auf, die den Datensatz in Delphi zurückgibt
Der Speicher, der den Rückgabedatensatz ausführt, kann über die Steuerung des Datensatzes über die Parameter des Parameters des Parameters aufgerufen werden. ptinputoutput.
Verwenden Sie TstoredProc, um die relevanten Einstellungen von UpdateFuxjexample als auszuführen:
Objekt StoredProc1: TstoredProc
DatabaseName = 'UseProc'
LagedProcname = 'updatefuxjexample'
Paramdata = <
Artikel
DataType = ftstring
Name = 'sdm' '
Paramtype = ptinput
Ende
Artikel
DataType = ftstring
Name = 'smc'
Paramtype = ptinput
Ende
Artikel
DataType = ftcursor
Name = 'preccur' '
Paramtype = ptinputoutput
Wert = null
Ende>
Ende
Die Ausführungsmethode lautet:
Speicherproc1.Params.items [0] .Assstring: = edit1.text;
LagedProc1.Params.items [1] .Assstring: = edit2.text;
GelagertProc1.Active: = false;
SpeichernProc1.Active: = True;
Verwenden Sie TQuery, um die relevanten Einstellungen von InsertFuxjexample als:
Objektabfrage1: TQuery
DatabaseName = 'UseProc'
Sql.strings = ((
'beginnen'
'InsertFuxjexample (SDM => m, smc =>: MC, preccur =>: reccur);'
'Ende;')
Paramdata = <
Artikel
DataType = ftstring
Name = 'dm'
Paramtype = ptinput
Ende
Artikel
DataType = ftstring
Name = 'MC'
Paramtype = ptinput
Ende
Artikel
DataType = ftcursor
Name = 'reccur' '
Paramtype = ptinputoutput
Ende>
Ende
Die Ausführungsmethode lautet:
Query1.params.items [0] .Assstring: = edit3.text; // den Parameter zuweisen;
Query1.params.items [1] .Assstring: = edit4.text;
Query1.aktiv: = false;
Query1.aktiv: = true;
Anhang: Einfacher Framework zum Erstellen gespeicherter Prozeduren, die Datensätze zurückgeben
1.
Packungstestpackage erstellen oder ersetzen ist
Typ testResultset ist Ref Cursor;
End -Testpackung;
2.
Verfahrenstest erstellen oder ersetzen
(
Preccur in Out Testpackage .TestresultSet
)
als
Beginnen
Preccur für
aus der Tabelle auswählen;
Ende;