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

PL/SQL Oracle Discussion :

Exécution SQL dynamique


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut Exécution SQL dynamique
    Bonjour a tous,

    Dans un projet professionnel, je veux donner en tant que paramètre à une procédure stockée Oracle, une liste d'instructions SQL contenant SELECT pour les exécuter et obtenir les résultats.

    Exemple de paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    declare csSelect varchar(4000);
     begin
     csSelect := 'SELECT * FROM JOURNAL';
     if 'A' != '%' then
        csSelect := csSelect || 'WHERE JOURNAL.NOM LIKE ''A%'' ';
     end if;
    Je besoin de ce pour Oracle et SQL Server. J'ai trouvé pour le serveur sql mais pas pour Oracle.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    C'est sans doute la commande EXECUTE IMMEDIATE que tu cherches...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut
    Alors j'ai bien essayé d'utilisé mais je n'arrive pas a retourner les résultats du select

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Sans indice supplémentaire, voici le tuto de EXECUTE IMMEDIATE.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut
    j'ai bien compris l'utilisation execute immediate, cela dis, je n'ai pas les données sélectionnées pour autant

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut
    Pour être plus précis, mon application web est capable d'appeler une proc ou fonction ou tout autre chose de la base de données avec des paramètres.
    Je souhaite donc écrire une proc ou fonction ou autre chose qui me permettra de passer un paramètre qui contient de code sql comme celui 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
    19
     
    string sql = "declare csSelectCosmos varchar(4000); "
    + " begin "
    + " csSelectCosmos:= '"
    + " SELECT USR.NOM AS USR,  JOURNAL.DT_MODIFICATION,  JOURNAL.MODIFICATION, PERSONNEL.NOM, PERSONNEL.PRENOM, JOURNAL.TYPE "
    + " FROM "
    + " JOURNAL INNER JOIN "
    + " PERSONNEL ON JOURNAL.NO_PERSONNEL = PERSONNEL.NO_PERSONNEL INNER JOIN "
    + " USR ON JOURNAL.NO_USR = USR.NO_USR "
    + " '; "
    + "  "
    + " IF '%' != '%' then "
    + " csSelectCosmos := csSelectCosmos || ' WHERE JOURNAL.TYPE LIKE ''P%'' '; "
    + " end if; "
    + "  "
    + " csSelectCosmos:= csSelectCosmos || ' ORDER BY JOURNAL.DT_MODIFICATION DESC'; "
    + "  "
    + " execute immediate csSelectCosmos; "
    + " end; ";
    et donc de me retourner les données.
    A savoir que le contenu de la requête est complétement dynamique, nombre de champs, liaison entre les tables

    Sous sqlserver un simple execute m'a donné le résultat assez facilement mais sous oracle, je ne suis vraiment pas a l'aise et évidemment si je n'avais pas déjà cherché des heures, je ne poserais pas la question.
    J'ai essayé des choses avec execute immediate ou encore dbms_sql.desc_table.

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

Discussions similaires

  1. Exécuter des ordres PL/SQL dynamiquement ?
    Par Andre.lissarrague dans le forum PL/SQL
    Réponses: 2
    Dernier message: 15/11/2013, 14h41
  2. SQL dynamique temps d'exécution
    Par Mikadox dans le forum DB2
    Réponses: 2
    Dernier message: 25/06/2013, 17h22
  3. Réponses: 14
    Dernier message: 10/01/2007, 10h12
  4. SQL dynamique
    Par Etienne1 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/08/2004, 10h18
  5. SQL Dynamique - Materialized view
    Par Simeans2004 dans le forum SQL
    Réponses: 15
    Dernier message: 10/06/2004, 17h56

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