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

Oracle Discussion :

ora-01001 : invalid cursor


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut ora-01001 : invalid cursor
    voici mon code :

    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
    declare
    	TYPE TYP_CLOSING_PRICES IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
    	closing_prices_list TYP_CLOSING_PRICES;
    	l_partition VARCHAR2(25):='P_SMF_SMFCP_20070302_D';
    	l_statement VARCHAR2(400);
    	TYPE c_partition_type_in IS REF CURSOR;
    	c_partition_in c_partition_type_in;
    BEGIN
    	 l_statement := 'SELECT ROWNUM '||
    		   'FROM smf_closing_prices '||
    		   'PARTITION('||l_partition||') '||
    		   'WHERE tstp_typ_stat_price not in (''01'',''06'',''07'')';
    	 OPEN c_partition_in FOR l_statement;
    	 LOOP
    	 	 FETCH c_partition_in BULK COLLECT INTO closing_prices_list LIMIT 5000;
    	 	 EXIT WHEN NOT c_partition_in%FOUND;
    	 END LOOP;
     
    	 CLOSE c_partition_in;
     
    END;
    je ne comprends vraiment pas l'erreur! et je veux garder le dynamisme pour le cursor car je compte intégrer ensuite ce code dans une procédure qui recevra en param le l_partition qui changera en fonction!

    par contre si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OPEN c_partition_in FOR SELECT rownum from smf_closing_prices partition(P_SMF_SMFCP_20070302_D) WHERE tstp_typ_stat_price not in ('01','06','07');
    comme ceci en dur ca fonctionne! mais comme déjà dit plus haut, c'est le dynamisme qui m'intéresse!
    qqun saurait-il m'aider?

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    1/ Merci d'éditer ton post pour mettre la balise CODE (le # dans les icones)

    2/ Va faire un tour dans le tuto sql dynamique, partie BULK et FETCH
    http://sheikyerbouti.developpez.com/execute_immediate/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BEGIN
      LC$Requete:= ‘SELECT emp_name, salary from EMP’;
        EXECUTE IMMEDIATE LC$Requete BULK COLLECT INTO T_Names, T_sal;
    END;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    OPEN Emp_cv for LC$Requete ;
        FETCH Emp_cv BULK COLLECT INTO T_id, T_Nom ;
    CLOSE Emp_cv ;
    Moi j'utilise rarement les FETCH, mais le LOOP pour un BULK COLLECT n'est donc pas à utiliser.
    Essaye avec le execute immediate sans les FOR, les OPEN, les CLOSE, etc... Normalement tu ne devrais pas avoir de problèmes

Discussions similaires

  1. ORA-01001 : invalid cursor avec Iterator
    Par Tora21 dans le forum JDBC
    Réponses: 7
    Dernier message: 29/06/2011, 12h43
  2. [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
  3. ORA-01001: invalid cursor
    Par LP-mpascolo dans le forum Administration
    Réponses: 10
    Dernier message: 12/10/2007, 09h50
  4. curseur invalid ora-01001
    Par couse1 dans le forum SQL
    Réponses: 4
    Dernier message: 13/07/2007, 09h37
  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