1. Utilisez des procédures stockées pour retourner les ensembles de données
L'ensemble de données renvoyé par des procédures stockées dans Oracle est renvoyée par les paramètres des données de type de curseur REF, et les paramètres qui renvoient les données doivent être de type ou de type out.
Étant donné que le type de données du paramètre ne peut pas être directement spécifié lors de la définition d'une procédure stockée est: REF Cursor, le curseur REF est d'abord redéfini par la méthode suivante:
Créer ou remplacer le package Fuxjpackage est
Type FuxJresultSet est Ref Cursor;
- Vous pouvez également définir d'autres contenus
fin Fuxjpackage;
Définissez à nouveau la procédure stockée:
Créer ou remplacer la procédure UpdateFuxJexample (SDM dans char, smc dans char, précur dans outjpackage.fuxjresultSet)
comme
Commencer
Mettre à jour FuxJexample SET MC = SMC où dm = sdm;
Si sql% rowcount = 0 alors
Rollback;
ouvrir un préccur pour
Sélectionnez «0» Res dans Dual;
autre
commettre;
ouvrir un préccur pour
Sélectionnez «1» Res dans Dual;
terminer si;
fin;
et
Créer ou remplacer la procédure InsertFuxJexample (SDM dans char, smc dans char, précur dans outjpackage.fuxjresultSet)
comme
Commencer
insérer dans les valeurs FuxJexample (DM, MC) (SDM, SMC);
commettre;
ouvrir un préccur pour
SELECT * FROM FUXJEXAMPLE;
fin;
2. Appelez la procédure stockée qui renvoie l'ensemble de données dans Delphi
Le stockage qui exécute l'ensemble de données de retour peut être appelé via le contrôle TStoredProc ou TQuery. PtinputOutput.
Utilisez tstoredProc pour exécuter les paramètres pertinents de updateFuxJexample comme:
objet StoredProc1: tstoredProc
Databasename = 'useProc'
StoredProcname = 'UpdateFuxJexample'
Paramdata = <
article
DataType = ftsstring
Name = 'sdm'
Paramtype = ptinput
fin
article
DataType = ftsstring
Name = 'smc'
Paramtype = ptinput
fin
article
DataType = ftcursor
Name = 'precur'
Paramtype = ptinpututput
Valeur = nul
fin>
fin
La méthode d'exécution est:
StoredProc1.Params.items [0] .Assstring: = edit1.Text;
StoredProc1.Params.Items [1] .Assstring: = edit2.Text;
StoredProc1.active: = false;
StoredProc1.active: = TRUE;
Utilisez TQuery pour exécuter les paramètres pertinents de InsertFuxJexample comme:
Query d'objet1: tQuery
Databasename = 'useProc'
Sql.strings = (
'commencer'
'InsertFuxJexample (sdm => m, smc =>: mc, précur =>: reccur);'
'fin;')
Paramdata = <
article
DataType = ftsstring
Name = 'dm'
Paramtype = ptinput
fin
article
DataType = ftsstring
Name = 'MC'
Paramtype = ptinput
fin
article
DataType = ftcursor
Name = 'reccur'
Paramtype = ptinpututput
fin>
fin
La méthode d'exécution est:
Query1.params.items [0] .Asstring: = edit3.Text;
Query1.params.items [1] .Asstring: = edit4.Text;
Query1.active: = false;
Query1.active: = true;
Si sql% rowcount = 0 alors
Rollback;
ouvrir un préccur pour
Sélectionnez «0» Res dans Dual;
autre
commettre;
ouvrir un préccur pour
Sélectionnez «1» Res dans Dual;
terminer si;
fin;
et
Créer ou remplacer la procédure InsertFuxJexample (SDM dans char, smc dans char, précur dans outjpackage.fuxjresultSet)
comme
Commencer
insérer dans les valeurs FuxJexample (DM, MC) (SDM, SMC);
commettre;
ouvrir un préccur pour
SELECT * FROM FUXJEXAMPLE;
fin;
2. Appelez la procédure stockée qui renvoie l'ensemble de données dans Delphi
Le stockage qui exécute l'ensemble de données de retour peut être appelé via le contrôle TStoredProc ou TQuery. PtinputOutput.
Utilisez tstoredProc pour exécuter les paramètres pertinents de updateFuxJexample comme:
objet StoredProc1: tstoredProc
Databasename = 'useProc'
StoredProcname = 'UpdateFuxJexample'
Paramdata = <
article
DataType = ftsstring
Name = 'sdm'
Paramtype = ptinput
fin
article
DataType = ftsstring
Name = 'smc'
Paramtype = ptinput
fin
article
DataType = ftcursor
Name = 'precur'
Paramtype = ptinpututput
Valeur = nul
fin>
fin
La méthode d'exécution est:
StoredProc1.Params.items [0] .Assstring: = edit1.Text;
StoredProc1.Params.Items [1] .Assstring: = edit2.Text;
StoredProc1.active: = false;
StoredProc1.active: = TRUE;
Utilisez TQuery pour exécuter les paramètres pertinents de InsertFuxJexample comme:
Query d'objet1: tQuery
Databasename = 'useProc'
Sql.strings = (
'commencer'
'InsertFuxJexample (sdm => m, smc =>: mc, précur =>: reccur);'
'fin;')
Paramdata = <
article
DataType = ftsstring
Name = 'dm'
Paramtype = ptinput
fin
article
DataType = ftsstring
Name = 'MC'
Paramtype = ptinput
fin
article
DataType = ftcursor
Name = 'reccur'
Paramtype = ptinpututput
fin>
fin
La méthode d'exécution est:
Query1.params.items [0] .Asstring: = edit3.Text;
Query1.params.items [1] .Asstring: = edit4.Text;
Query1.active: = false;
Query1.active: = true;
Attachement: Framework simple pour créer des procédures stockées qui renvoient des ensembles de données
1 et 1
Créer ou remplacer le package de package est
Type TestResultSet est un curseur REF;
End TestPackage;
2
Créer ou remplacer le test de procédure
(
préccur dans Out TestPackage .TestResultSet
)
comme
Commencer
ouvrir un préccur pour
Sélectionner * dans la table;
fin;