Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 12/11/2007, 14h29   #1
Membre du Club
 
Inscription : mai 2004
Messages : 183
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 183
Points : 66
Points : 66
Par défaut pl/sql dual ORA-00902

bonjour j'ai cree
une fonction qui sera appellé plus tard dans crystal report

Code :
1
2
3
4
5
6
7
8
9
10
FUNCTION TEST_ADHESIONS RETURN CURSEUR_TYPE IS MONCURSEUR CURSEUR_TYPE ;
 
begin
 
OPEN  MONCURSEUR FOR
 
SELECT * FROM adhesions a;
 
RETURN  MONCURSEUR;
end;

quand je l'appelle sous sql via

Code :
SELECT pkg_adhesion.TEST_ADHESIONS   FROM dual;
j'ai une erreur ORA-00902 que faut t'il faire pour qu'il me renvoie tout?

merci

michel
moulery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 14h35   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
MONCURSEUR n'est pas déclaré, il manque un INTO, etc... je te conseille de faire une recherche dans le forum et lire le tuto PL/SQL avant de continuer

PS : merci de respecter les régles du forum

Edit : pour info : http://sheikyerbouti.developpez.com/...record_set.htm
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 14h54   #3
Membre du Club
 
Inscription : mai 2004
Messages : 183
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 183
Points : 66
Points : 66
si il etait declare

<code>
TYPE CURSEUR_TYPE IS REF CURSOR;
</code>


je veux recuperer tous les champs de ma table

et quand je l'appelle via sql erreur ORA-00902

le dual a t'il des problemes?

je veux recuperer mes donnees sous la forme SELECT pkg_adhesion.TEST_ADHESIONS FROM dual;

et non passer par pl/sql
moulery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 15h02   #4
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Tu peux utiliser Oracle Pipelined Table Functions à partir de la version 9i

http://www.akadia.com/services/ora_pipe_functions.html
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 15h12   #5
Membre du Club
 
Inscription : mai 2004
Messages : 183
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 183
Points : 66
Points : 66
malheuresement j'ai la 8
moulery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 19h24   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
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
26
 
CREATE OR REPLACE package pkg_adhesion IS
 
  TYPE CURSEUR_TYPE IS REF CURSOR;
 
  FUNCTION TEST_ADHESIONS RETURN CURSEUR_TYPE;
 
end;
/
 
CREATE OR REPLACE package body pkg_adhesion IS
  FUNCTION TEST_ADHESIONS RETURN CURSEUR_TYPE 
  IS 
 
  MONCURSEUR CURSEUR_TYPE; 
 
  begin
    OPEN MONCURSEUR FOR SELECT * FROM scott.emp;
 
    RETURN  MONCURSEUR;
 
  end;
end;
/
 
SELECT pkg_adhesion.TEST_ADHESIONS   FROM dual;
testé sur Oracle 10
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 08h43   #7
Membre du Club
 
Inscription : mai 2004
Messages : 183
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 183
Points : 66
Points : 66
Par défaut sous oracle 8 impossible

Merci mais sous oracle 8 cela ne marche pas
Michel
y'a t'il un autre moyen
moulery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 09h20   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
c'est tout simplement impossible avant la 9
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 17h09   #9
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
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
26
27
28
29
30
 
sqlplus mni/mni
 
SQL*Plus: Release 8.1.7.0.0 - Production ON Ma Nov 13 17:08:55 2007
 
(c) Copyright 2000 Oracle Corporation.  ALL rights reserved.
 
 
Connected TO:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
WITH the Partitioning OPTION
JServer Release 8.1.7.4.0 - Production
 
SQL> var c refcursor
SQL> exec :c := pkg_adhesion.TEST_ADHESIONS;
 
PL/SQL procedure successfully completed.
 
SQL> print c
 
     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 17/12/80        800
        20
 
      7499 ALLEN      SALESMAN        7698 20/02/81       1600        300
        30
...
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 21h19   #10
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
refcursor existe dans SQL*Plus mais est-ce qu'il existe en PL/SQL (le langage et non le client) ? Je crains que non
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 14h09   #11
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Citation:
Envoyé par orafrance Voir le message
refcursor existe dans SQL*Plus mais est-ce qu'il existe en PL/SQL (le langage et non le client) ? Je crains que non
Je pense que vous cherchez midi à quatorze heure. Et voilà la preuve
Code :
1
2
3
4
5
6
select sysdate from dual

SYSDATE
-------------------
14/11/2007 14:00:00
C’est une blague, ne le prenez pas au sérieux. Je sent que nous deux on va devenir amis.

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
26
27
28
29
30
 
sqlplus mni/mni
 
SQL*Plus: Release 8.1.7.0.0 - Production ON Me Nov 14 14:00:29 2007
 
(c) Copyright 2000 Oracle Corporation.  ALL rights reserved.
 
 
Connected TO:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
WITH the Partitioning OPTION
JServer Release 8.1.7.4.0 - Production
 
SQL> SET serveroutput ON
SQL>Declare 
  crs pkg_adhesion.CURSEUR_TYPE;
  rEmp scott.emp%rowtype;
Begin
  crs := pkg_adhesion.TEST_ADHESIONS;
  Loop
    Fetch crs INTO rEmp;
    Exit When crs%NOTFOUND;
    dbms_output.put_line('EmpNo:'||To_Char(rEmp.EmpNo)||' Nom:'||rEmp.EName);
  End Loop; 
End; 
/
EmpNo:7369 Nom:SMITH
EmpNo:7499 Nom:ALLEN
EmpNo:7521 Nom:WARD
…
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 14h13   #12
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par mnitu Voir le message
C’est une blague, ne le prenez pas au sérieux. Je sent que nous deux on va devenir amis.


Pas de problème

En effet, je croyais que ref cursor était une nouveauté 9... on s'y retrouve plus avec toutes ces versions

J'ai même trouvé un exemple qui répond à la question : http://www.oracle-base.com/articles/...Recordsets.php
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h02.


 
 
 
 
Partenaires

Hébergement Web