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 :

Création d'un curseur


Sujet :

Oracle

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Points : 166
    Points
    166
    Par défaut Création d'un curseur
    Bonjour,

    puis-je dans une procédure créer un curseur dont la requête est stockée dans une variable ?

    Le code ressemblerait à ceci

    CREATE OR REPLACE ma_proc
    AS

    requete CLOB;

    CURSOR mon_curs IS requete;

    BEGIN

    requete := 'SELECT ........';

    FOR obj1 IN mon_curs LOOP
    ...
    ...
    ...
    END LOOP;

    EXCEPTION
    ...
    ...
    ...
    END

    Merci et bonne journée.

  2. #2
    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
    En utilisant les REF CURSOR, il est possible de paramètrer un curseur avec un VARCHAR2 ou CLOB.

    Exemple:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    SQL> 
    SQL> DROP TABLE t;
     
    Table dropped.
     
    SQL> 
    SQL> CREATE TABLE t(x INT, Y VARCHAR2(30));
     
    Table created.
     
    SQL> INSERT INTO T VALUES (1, 'un');
     
    1 row created.
     
    SQL> INSERT INTO T VALUES (2, 'deux');
     
    1 row created.
     
    SQL> COMMIT;
     
    Commit complete.
     
    SQL> 
    SQL> set serveroutput on;
    SQL> 
    SQL> DECLARE
      2  texte VARCHAR2(100);
      3  TYPE trc IS REF CURSOR;
      4  c1 INT;
      5  c2 VARCHAR2(30);
      6  c trc;
      7  BEGIN
      8  texte := 'SELECT * FROM T';
      9  OPEN c FOR texte;
     10  LOOP
     11  FETCH c INTO c1,c2;
     12  EXIT WHEN c%NOTFOUND;
     13  dbms_output.put_line(c1 || ' ' || c2);
     14  END LOOP;
     15  END;
     16  /
    1 un                                                                            
    2 deux                                                                          
     
    PL/SQL procedure successfully completed.
     
    SQL> show errors
    No errors.
    SQL> exit

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Points : 166
    Points
    166
    Par défaut
    Merci et bonne soirée.

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

Discussions similaires

  1. Création Curseur à partir d'un sql statement dynamique
    Par droog dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 20/05/2008, 16h04
  2. Erreur à la création du handle de curseur
    Par souminet dans le forum Bases de données
    Réponses: 6
    Dernier message: 03/02/2008, 10h08
  3. Problème de création de curseur
    Par ChPr dans le forum Graphisme
    Réponses: 8
    Dernier message: 21/05/2007, 10h30
  4. [Proc Stock]Création d'un curseur en SQL dynamique
    Par marsup54 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/06/2006, 15h02
  5. Création et gestion d'un curseur en PL/SQL
    Par Petit_Jardin dans le forum PL/SQL
    Réponses: 2
    Dernier message: 23/11/2005, 15h27

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