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 :

Executer une requete construite dans une string


Sujet :

DB2

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 38
    Points : 24
    Points
    24
    Par défaut Executer une requete construite dans une string
    Bonjour,

    Je suis dans une fonction SQL.
    Avec les paremetres d'entree de cette fonction j'ai construit ma requete. Il me faut maintenant l'éxécuter... mais je ne vois pas comment faire ?

    (Je suis sous DB2 mais j'imagine que les solutions sont +/- les memes dans tous les SGBD)

    Merci,
    Gaël

  2. #2
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 788
    Points : 3 054
    Points
    3 054
    Par défaut
    Tu serais mieux de poster le code de la fonction...

    Pour SQL Server : ce que tu mentionnes n'est pas possible car une fonction sous SS ne peut pas être dynamique. Avec une stored procedure, cela marcherait : définition d'une variable varchar() que tu initialiserais et que tu exécuterais avec un exec sp_executesql.

    Bonne chance.

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    En gros je veux faire une requete dynamique, je passe en parametres la table dans laquelle je vais lire, la colonne que jutilise pour faire ma jointure, le champs que je vais lire ... avec ca je construis ma requete en concaténant tout ca.

    Maintenant il me reste a l'executer. La requete retournera toujours 1 seul record donc j'aimerais directement renvoyer le resultat de cette colonne lue qui sera de type entier.
    (possibilité d'avoir 0 record retourné mais je m'arrangerai pour faire un test plus tard genre si count(*) = 0 je renvoi pas le resultat de ma requete mais le code -1)

    En gros j'ai cherché à utiliser EXECUTE IMMEDIATE mais apparemment sous DB2 on peut pas l'utiliser avec un select ??

    Je cherchais a faire un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE IMMEDIATE STR_QUERY INTO RETURN_VALUE;
    ...mais ca marche pas

    VOila pour le code de ma fonction dans letat actuel: (je retourne pour linstant une string qui contient la requete que j'ai construite plutot que le resultat de celle ci)
    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
    CREATE FUNCTION OX00UC1.MUL_POINTER_LOOKUP
     (DB_SCHEMA VARCHAR(30),
      HUB_TO_USE VARCHAR(30),
      HUB_JOIN_KEY VARCHAR(30),
      HUB_FIELD_TO_READ VARCHAR(254),
      SOURCE_VALUE BIGINT
     ) 
      RETURNS VARCHAR(254)
      BEGIN ATOMIC
     
    	 DECLARE STR_QUERY VARCHAR(4000) DEFAULT '';
         SET STR_QUERY = 'SELECT ' CONCAT HUB_FIELD_TO_READ CONCAT 
    	                 ' FROM '  CONCAT DB_SCHEMA CONCAT '.' CONCAT HUB_TO_USE CONCAT 
    					 ' WHERE ' CONCAT HUB_JOIN_KEY CONCAT ' = ' CONCAT  CAST (SOURCE_VALUE AS CHARACTER(10));
     
     
    	 RETURN STR_QUERY;
      END
    Merci pour l'aide

  4. #4
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 788
    Points : 3 054
    Points
    3 054
    Par défaut
    Je ne connais pas DB2; désolé. Une fois encore, avec SQL Server, c'est impossible : une fonction ne peut pas contenir un SQL dynamique.

Discussions similaires

  1. extraire le jour dans une requete sql dans une colone de type date
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 17/04/2011, 21h42
  2. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  3. executer une procedure stockées dans une requete SELECT
    Par bleuerouge dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/08/2006, 17h23
  4. Importer valeur requete SQL dans une Requete
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/03/2006, 14h24
  5. Affcecter une valeur NULL dans une requete paramétrée
    Par thiouwz2 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/11/2004, 15h02

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