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

Reports Oracle Discussion :

SQL dynamique sous report


Sujet :

Reports Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut [RESOLU] SQL dynamique sous report
    Bonjour,
    j'ai lu avec attention les cours de SheikYerbouti concernant le "Le SQL Dynamique natif" mais j'ai encore une question concernant son interêt sous report.

    Je reprend une application dont les reports (très complexes et avec de nombreux paramètres optionnels en entrée) sont tous codés en sql dynamique.
    Je vois bien l'interêt pour gérer les paramètres en entrée.

    Mais concernant des requêtes simples, genre un select d'un libellé avec un code. Le sql dyanmique ne risque-t-il pas de ralentir les traitements ?

    Je précise qu'il y a ENORMEMENT de requête de ce style pour un seul état !!!


    Merci.

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Le SQL dynamique n'a d'interêt que pour les requêtes ne pouvant pas être écrites en dur.

    Un simple select dont la table et la colonne sont clairement identifiés n'a pas besoin de SQL dynamique.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci, c'est effectivement ce que j'en avais conclu.

    Mais dans mon cas, elles existent déjà, et en dehors du fait que cela paraissent étrange (c'est vrai...) est-ce que cela est plus long l'exécution ?

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

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Comment c'est codé un report en SQL Dynamique ?

    Si les paramètres ne font que limiter un SELECT, tu peux plutôt utiliser le & pour insérer dans la Clause Where ta restriction pour un paramètre.

    Pour la question du select tout bête, mieux vaut utiliser le sql pur, ne serait-ce que pour avoir les erreurs de compilation.

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Niveau perfs, le dynamique est plus long
    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
    DECLARE
    v NUMBER;
    v_date1 DATE;
     
    BEGIN
     
    	v_date1 := SYSDATE;
     
    	FOR i IN 1..500000
    	LOOP
    		SELECT 1 INTO v FROM DUAL;
    --		EXECUTE IMMEDIATE 'SELECT 1 FROM DUAL' INTO v;
    	END LOOP;
     
    	DBMS_OUTPUT.PUT_LINE(24 * 3600 * (SYSDATE - v_date1));
    END;
    Le SQL pur : 29s
    le SQL Dynamique : 42s

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Oui, j'avoue ça fait bizarre dit comme ça...
    Bon forcément, c'est pas les interrogations en elles-mêmes qui sont dynamiques, mais plutôt plein de code dans des déclencheurs d'état (before report par exple).

    Là je ne trouve QUE du sql dynamique...
    Alors que le besoin ne me parait pas necessaire...

    Est-ce plus long à l'execution d'après vous ?

    [EDIT]
    Pas vu la réponse de mcm...]
    Bon, je vais pister par ici...

    Merci !

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

Discussions similaires

  1. Apprentissage SQL dynamique sous MySql
    Par patic dans le forum MySQL
    Réponses: 2
    Dernier message: 12/08/2009, 10h30
  2. Comment parametrer une requête SQL alimentant un Report sous VB6
    Par juldace dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 29/07/2008, 14h36
  3. Déclaration de variable dynamiquement sous pl/sql
    Par madina dans le forum PL/SQL
    Réponses: 6
    Dernier message: 07/05/2008, 18h12

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