IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

pl/sql dual ORA-00902 [Fait]


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 189
    Par défaut pl/sql dual ORA-00902
    bonjour j'ai cree
    une fonction qui sera appellé plus tard dans crystal report

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    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

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 189
    Par défaut
    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

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

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

    http://www.akadia.com/services/ora_pipe_functions.html

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 189
    Par défaut
    malheuresement j'ai la 8

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 189
    Par défaut sous oracle 8 impossible
    Merci mais sous oracle 8 cela ne marche pas
    Michel
    y'a t'il un autre moyen

  8. #8
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    c'est tout simplement impossible avant la 9

  9. #9
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    ...

  10. #10
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    refcursor existe dans SQL*Plus mais est-ce qu'il existe en PL/SQL (le langage et non le client) ? Je crains que non

  11. #11
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    …

  12. #12
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 06/08/2009, 16h16
  2. [Sql*Net] ORA - 03113
    Par madina dans le forum Oracle
    Réponses: 7
    Dernier message: 28/07/2006, 10h41
  3. [java.sql.SQLException: ORA-01002: fetch out of sequence]
    Par chouchou93 dans le forum Oracle
    Réponses: 9
    Dernier message: 30/05/2006, 13h05
  4. Réponses: 4
    Dernier message: 25/01/2006, 18h25
  5. [PL/SQL + VB] ORA-01002 fetch out of sequence
    Par superfly dans le forum Oracle
    Réponses: 10
    Dernier message: 03/01/2005, 20h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo