guilhemh
Messages postés36Date d'inscriptionlundi 22 avril 2002StatutMembreDernière intervention12 décembre 2005
-
14 mars 2005 à 10:57
vgoblet
Messages postés1Date d'inscriptionsamedi 21 février 2004StatutMembreDernière intervention 8 avril 2005
-
8 avril 2005 à 10:23
Bonjour,
J'aimerais savoir comment écrire la procédure oracle me permettant de
renvoyer un résultat composé de plusieurs lignes (select * from table)
et comment écrire le programme delphi me permettant de l'afficher dans
un dbgrid.
Je voulais le faire avec une fonction mais apparement c'est pas
possible et j'ai essayé de le faire avec un argument mais ne trouve pas
le type qui convient.
How do I get a result set from an Oracle Stored Procedure?
Answer:
A REF CURSOR is required to return a result set from a stored procedure. You will need to put the procedure in a package. To create a package use the following SQL command: CREATE PACKAGE MYPKG
IS
TYPE CursorType IS REF CURSOR;
END MyPkg;
Then when you create the procedure: CREATE PROCEDURE RETURN_RESULT_SET
(oCursor IN OUT MyPkg.CursorType) AS
BEGIN
open oCursor for select * from SomeTable;
END;
In Delphi or C++Builder, set the TStoredProc parameter DataType as type ftCursor. At this point you should treat the TStoredProc component like a TQuery and use the Open method instead of ExecProc.
pseudoOM
Messages postés173Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention30 janvier 20091 14 mars 2005 à 15:22
creer un dataset et écrire la requête dans la partie command. Créer un datasource et relier ce datasource au dataset par la propriété "dataset". Et enfin dans la propriété "datasource" du dbgrid mettre le datasource qui vient d'être créé.
Pour les paramètres dans la requête, il faut mettre les 2points (:) avant le nom du paramètre. Ensuite aller dans le propriété "parameters" du dataset et choisir pour chaque paramètre le bon type. Et pour donner une valeur au paramètre lors de l'appel du dataset dataset.parameters[n°duparametre].value:=lavaleur.
guilhemh
Messages postés36Date d'inscriptionlundi 22 avril 2002StatutMembreDernière intervention12 décembre 2005 14 mars 2005 à 17:16
merci de cette réponse
en fait j'ai du mal posé la question, je veux créer une procédure
stockée oracle qui renvoie un ensemble de ligne (calcul de bourin sur
des données...)et je veux mettre ce résultat dans un datagrid, est-ce
plus clair?
pseudoOM
Messages postés173Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention30 janvier 20091 16 mars 2005 à 08:12
DECLARE
variable type (ex: var INTEGER;)
....
BEGIN
SELECT * FROM table;
(si tu dois récupérer des trucs spécifiques c'est SELECT champ INTO variable FROM table et tu peux mettre des conditions WHERE)
ton calcul de bourin;
(il peut y avoir des boucles aussi FOR .... DO ou autre)
RETURN variable;
END;