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

DB2 Discussion :

[DB2] SQL dynamique pour déclarer un curseur


Sujet :

DB2

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Points : 62
    Points
    62
    Par défaut [DB2] SQL dynamique pour déclarer un curseur
    Bonjour, je voudrais savoir s'il est possible de déclarer, dans une procédure stockée, un curseur via du SQL dynamique. C'est nécessaire puisque je passe en paramètres de la procédure stockée les infos du curseur.
    Par exemple :

    SET TEXTE = ' DECLARE CURSEUR CURSOR FOR SELECT * FROM ' || @TABLE ;
    EXECUTE IMMEDIATE TEXTE;

    C'a n'a pas l'air de marcher donc est ce qu'il existe une solution pour déclarer un curseur dont la table ou d'autres infos le concernant sont passés en paramètres.

    Merci

  2. #2
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Points : 154
    Points
    154
    Par défaut
    Je sais que ce sujet est très vieux mais je pense avoir trouvé une réponse :

    Si on passe en paramètre de la procedure stockée un paramètre nécessaire dans la requête du curseur on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    create procedure test(IN var varchar(15))
    language sql
    begin
    declare cur CURSOR FOR select champ1 from matable where champ2=var;
    .............
    Le curseur prends bien en compte la variable VAR qui est passé en paramètre.

    Si c'est bien sûr ça que tu appel curseur dynamique!

  3. #3
    Membre régulier Avatar de delas
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 95
    Points
    95
    Par défaut
    Et apres, je parcour mon curseur mais comment je fais pour sortir de la boucle. est-ce qu(il existe quelque chose du genre while curqsor.hasmoreElement

    ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Prepare
    Il vaut mieux passer par une instruction SQL PREPARE.
    Un exemple simple:
    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
    CREATE procedure test(IN MaTable varchar(15))
    LANGUAGE sql
    BEGIN
    DECLARE stmt varchar(128);
    DECLARE CSR CURSOR FOR sqlstm;
    SET stmt = 'SELECT ... FROM '  CONCAT  MaTable ; 
    PREPARE sqlstm FROM stmt;                             
    OPEN CSR;     
    
    getRows:                    
    LOOP                        
    FETCH CSR INTO ...;   
      IF SQLCODE = 0 THEN    
        ... traitement à faire ...
      ELSE             
        LEAVE getRows;
      END IF;          
    END LOOP getRows;      
        
    END;

Discussions similaires

  1. [astuce]sql dynamique pour l'interet des developpeur
    Par islamov2000 dans le forum Reports
    Réponses: 1
    Dernier message: 13/04/2013, 05h03
  2. sql dynamique pour l'interet des developpeur
    Par islamov2000 dans le forum Reports
    Réponses: 0
    Dernier message: 13/07/2011, 15h26
  3. SQL Dynamique pour listes de taille variable
    Par Tino13 dans le forum SQL
    Réponses: 9
    Dernier message: 24/08/2007, 09h30
  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, 14h02
  5. [PL/SQL] SQL Dynamique et curseur
    Par Loko dans le forum Oracle
    Réponses: 10
    Dernier message: 23/11/2004, 16h18

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