Oracle procédure stockée dataset [Résolu]

Signaler
Messages postés
36
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
12 décembre 2005
-
Messages postés
1
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
8 avril 2005
-
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.



Merci de votre aide c'est très urgent.

7 réponses

Messages postés
1
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
8 avril 2005

bonjour,
la réponse est là : http://bdn.borland.com/article/0,1410,28616,00.html

à savoir :

Question:

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.

Crdl.
VG
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

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.

J'espère que tu as tout compris.

pseudoOM
Messages postés
36
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
12 décembre 2005

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?
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

Tu peux mettre ta procédure dans le dataset. Et si tu fais comme j'ai dit au dessus, le résultat s'affichera dans le dbgrid.

pseudoOM
Messages postés
36
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
12 décembre 2005

je suis d'accord avec toi mais comment écrire la procédure sous oracle (paramétre OUT)? que doit elle renvoyé?



Merci de ton aide
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

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;

pseudoOM
Messages postés
36
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
12 décembre 2005

une procédure accepte un return ?

je n'ai pas l'impression qu'on puisse appeler une fonction ...



Ensuite c'est un type complexe que je dois renvoyé.

Merci de ton aide