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

SQL Oracle Discussion :

curseur invalid ora-01001


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut curseur invalid ora-01001
    Salut,

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create or replace package retour as 
    TYPE MON_TYPE IS TABLE OF VARCHAR2(1000) INDEX BY BINARY_INTEGER ;
    table_rec MON_TYPE;
    function retourquery (tab varchar2) return MON_TYPE;
    end retour;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create or replace package body retour as
    TYPE curs IS REF CURSOR;
    function retourquery(tab varchar2) RETURN MON_TYPE IS
    c curs;
    tab_rec MON_TYPE;
    query varchar2(5000) := 'select libelle from '||tab;
    Begin
       OPEN C FOR query;
       FETCH C BULK COLLECT Into tab_rec;
       CLOSE C;
       RETURN tab_rec;
    End retourquery;
    end retour;
    Et lorsque j'appelle la fonction voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set serveroutput on
    declare
    tablo retour.MON_TYPE;
    begin
    dbms_output.ENABLE(900000);
    tablo := retour.retourquery('udm');
    for i in 1 .. tablo.count
    loop
    dbms_output.put_line(i||' : '||tablo(i));
    end loop;
    end;
    J'ai un message ora-01001 curseur invalide, par contre lorsque je ne passe pas de parametre à ma fonction et que je mets en 'dur' (open c for select libelle from udm) ça marche.
    Donc comment je peux faire pour faire passer le nom d'une table (ou autre : par exemple toute une requete) en parametre pour que mon curseur au niveau de ma fonction marche.

    Merci d'avance pour les réponses.

    Couse1

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    as tu essayé d'afficher query pour vérifier que la requete est bien ce qu'elle doit être ?
    ou alors essaye de remplir query dans la partie begin et non dans l'initialisation (je suis pas très sure de moi sur ce coup là)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    Oui la requête est bonne et query dans la partie begin ne change rien.

    merci pour t suggestions
    couse1

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Quelle est votre version d'Oracle ?

    Si c'est une 8i, alors il s'agit probablement d'une limitation de la 8i (pas de bulk collect avec un ref cursor) qui a été supprimée en 9i d'après AskTom

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    Effectivement c du 8i

    Pb resolu merci

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

Discussions similaires

  1. [Oracle] ORA-01001: invalid cursor in
    Par aphp1 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/12/2008, 09h25
  2. ORA-01001: invalid cursor
    Par LP-mpascolo dans le forum Administration
    Réponses: 10
    Dernier message: 12/10/2007, 09h50
  3. [PL/SQL] ORA-01001: curseur non valide
    Par sider_winder dans le forum SQL
    Réponses: 1
    Dernier message: 03/05/2007, 09h37
  4. ora-01001 : invalid cursor
    Par sherdogvdb dans le forum Oracle
    Réponses: 1
    Dernier message: 02/03/2007, 12h36
  5. ORA 01001 invalid cursor
    Par claralavraie dans le forum Oracle
    Réponses: 10
    Dernier message: 28/07/2006, 15h13

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