Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/09/2007, 17h44   #1
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Par défaut Procédure stoké - Select

Bonjour
Peut on en Oracle créer une procédure stocké qui renvoi un jeu de résultat, à l'instar d'un select.
Ex
Code :
1
2
3
4
5
 
CREATE OR REPLACE Procedure maProcedure(mesParam....)
AS
   SELECT * Fom Matable WHERE mesConditions
End;
Il faut qu'on puisse utiliser le jeu de résultat dans l'application hôte (delphi, php...), comme si c'était une simple requête SQL.
Si ce n'est pas possible est t'il possible en oracle d'avoir une vue qui accepte des paramètres ?

Merci
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 17h46   #2
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Fais une recherche sur ref cursor, tu trouveras ton bonheur
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 17h53   #3
Membre actif
 
Avatar de neuropathie
 
Inscription : janvier 2005
Messages : 210
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 210
Points : 154
Points : 154
je ne sais pas si l'informtion est exacte, mais tu peux utiliser des vues matérialisées
neuropathie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 09h22   #4
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Citation:
Fais une recherche sur ref cursor, tu trouveras ton bonheur
Si ce n'est pas trop demandé, serait-ce possible d'avoir un exemple
- Le "create procedure"
- la syntaxe pour lancer la procédure

Merci
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 09h50   #5
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Voici un petit exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SQL>CREATE OR REPLACE PROCEDURE PROC1
  2  (NOM_TABLE IN VARCHAR2,
  3   COL IN VARCHAR2,
  4   CURSEUR IN OUT SYS_REFCURSOR)
  5  AS
  6    v_req VARCHAR2(500) ;
  7  BEGIN
  8    v_req := 'select ' || col || ' from ' || nom_table || ' where rownum < 10';
  9    open curseur FOR v_req;
 10  END;
 11  /
SQL>var rc refcursor
SQL>exec proc1 ('user_tables', 'table_name', :rc)
SQL>print :rc
 
TABLE_NAME
------------------------------
A
B
C
D
E
F
G
H
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 10h42   #6
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Avant tout, merci de votre aide.

J'ai appliqué l'exemple donnée cela fonctionne parfaitement avec SQL PLUS.
En revanche impossible d'executer la procédure en dehors de SQL PLUS.
Or c'est justement la le plus important ! Je dois lancer cette procédure à partir d'une application (DELPHI / PHP) et pouvoir récupérer le jeu de résultat dans l'application (comme un select) pour affichage traitement.

Mais la impossible de lancer la procédure, j'ai un message/d'erreur : ORA-00900: instruction SQL non valide

Quelqu'un a une piste ?

merci
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 10h52   #7
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Je ne connais ni php ni delphi, mais je suppose que ta procédure stockée s'exécute comme n'importe qu'elle autre procédure stockée et que tu dois définir une variable pour récupérer ton ref cursor.

J'ai trouvé un exemple qui semble fonctionner en php :
http://www.developpez.net/forums/sho...66&postcount=9
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h18.


 
 
 
 
Partenaires

Hébergement Web