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

guilhemh 36 Messages postés lundi 22 avril 2002Date d'inscription 12 décembre 2005 Dernière intervention - 14 mars 2005 à 10:57 - Dernière réponse : vgoblet 1 Messages postés samedi 21 février 2004Date d'inscription 8 avril 2005 Dernière intervention
- 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.



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

7 réponses

Répondre au sujet
vgoblet 1 Messages postés samedi 21 février 2004Date d'inscription 8 avril 2005 Dernière intervention - 8 avril 2005 à 10:23
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de vgoblet
pseudoOM 174 Messages postés jeudi 3 février 2005Date d'inscription 30 janvier 2009 Dernière intervention - 14 mars 2005 à 15:22
0
Utile
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
Commenter la réponse de pseudoOM
guilhemh 36 Messages postés lundi 22 avril 2002Date d'inscription 12 décembre 2005 Dernière intervention - 14 mars 2005 à 17:16
0
Utile
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?
Commenter la réponse de guilhemh
pseudoOM 174 Messages postés jeudi 3 février 2005Date d'inscription 30 janvier 2009 Dernière intervention - 14 mars 2005 à 18:51
0
Utile
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
Commenter la réponse de pseudoOM
guilhemh 36 Messages postés lundi 22 avril 2002Date d'inscription 12 décembre 2005 Dernière intervention - 15 mars 2005 à 19:28
0
Utile
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
Commenter la réponse de guilhemh
pseudoOM 174 Messages postés jeudi 3 février 2005Date d'inscription 30 janvier 2009 Dernière intervention - 16 mars 2005 à 08:12
0
Utile
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
Commenter la réponse de pseudoOM
guilhemh 36 Messages postés lundi 22 avril 2002Date d'inscription 12 décembre 2005 Dernière intervention - 16 mars 2005 à 21:01
0
Utile
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
Commenter la réponse de guilhemh

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.