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à)
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  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