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 :

SQL dynamique: PL/SQL -> DB2


Sujet :

DB2

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 38
    Par défaut SQL dynamique: PL/SQL -> DB2
    Cette fonction PL/SQL peut elle trouver un equivalent dans DB2 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    FUNCTION Compte_rec
      (
            PC$Table IN VARCHAR2,
            PC$ClauseWhere IN VARCHAR2
      ) RETURN PLS_INTEGER
    IS
      LC$Requete      VARCHAR2(512) ;
      LN$Total        PLS_INTEGER ;
    BEGIN
      LC$Requete := ‘Select count(*) From ‘ || PC$Table || ‘ where ‘ || PC$ClauseWhere ;
      EXECUTE IMMEDIATE LC$Requete INTO LN$Total ;
      return LN$Total ;
    END ;
    ...je n'arrive pas a utiliser en DB2 le EXECUTE IMMEDIATE avec ma requete construite comme dans l'exemple ci dessus en string pour recuperer le resultat de la requete.

    Merci pour l'aide

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    L'Execute IMMEDIATE ne permet pas de SELECT et encore moins de INTO.
    Si on veux faire du Dynamique, il faut passer par un curseur.
    Voir ce post ou je donne un exemple identique

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 38
    Par défaut
    Merci bcoupn J'ai effectivement compris comment faire avec ta solution.

    ...seulement pour une raison que je n'arrive vraiment pas a comprendre la declaration d'un cursor me donne une erreur, que je passe par une variable pour ma requete, que je la mette directement ...
    (j'utilise Quest Central)

    Par ex, fonction simplissime ou je declare juste un cursor dont je me sers pas pour le moment vu que ca compile pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE FUNCTION TOTO()RETURNS VARCHAR(254)
      LANGUAGE SQL
      BEGIN ATOMIC
      	DECLARE c1 CURSOR FOR SELECT count(*) from OX00UC1.OKDGLA_HUB;
    	RETURN 'aaa';
      END
    ...et bah je recois cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Statement processed with ERROR.
    [DB2/6000] SQL0104N  An unexpected token "FOR" was found following "IC DECLARE c1 CURSOR". Expected tokens may include: "<SQL_variable_declarations>". LINE NUMBER=1.  SQLSTATE=42601
    *** Execution stopped due to error *** 
    Autre truc bizarre sur lequel je cherche des eclaircissement:
    rien ne fonctionne si je mets pas ATOMIC apres mon BEGIN

  4. #4
    Membre Expert

    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
    Par défaut
    Quelle DB2 utilises-tu ? Sous quel OS ?

Discussions similaires

  1. SQL Dynamique Vs SQL pas dynamique
    Par leftyy dans le forum PL/SQL
    Réponses: 1
    Dernier message: 09/06/2010, 15h55
  2. [PL/SQL] connect en SQL dynamique
    Par mbgh1302 dans le forum SQL
    Réponses: 9
    Dernier message: 22/01/2008, 23h54
  3. [DB2] SQL dynamique pour déclarer un curseur
    Par Fatah93 dans le forum DB2
    Réponses: 3
    Dernier message: 12/12/2006, 13h06
  4. [SQL] Spool et SQL dynamique
    Par claclapub dans le forum Oracle
    Réponses: 2
    Dernier message: 21/07/2006, 16h55
  5. Réponses: 4
    Dernier message: 30/01/2005, 14h23

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