Looking for oracle Keywords? Try Ask4Keywords

Oracle DatabaseSQL dynamique


Introduction

SQL dynamique vous permet d'assembler un code de requête SQL dans l'environnement d'exécution. Cette technique présente certains inconvénients et doit être utilisée très soigneusement. Dans le même temps, il vous permet de mettre en œuvre une logique plus complexe. PL / SQL exige que tous les objets, utilisés dans le code, doivent exister et être valides au moment de la compilation. C'est pourquoi vous ne pouvez pas exécuter les instructions DDL directement dans PL / SQL, mais SQL dynamique vous permet de le faire.

Remarques

Quelques remarques importantes:

  1. N'utilisez jamais la concaténation de chaîne pour ajouter des valeurs à la requête, utilisez plutôt des paramètres. C'est faux:

    execute immediate 'select value from my_table where id = ' || 
         id_valiable into result_variable;
    

    Et c'est juste:

    execute immediate 'select value from my_table where id = :P '
        using id_valiable into result_variable;
    

    Il y a deux raisons à cela. Le premier est la sécurité. La concaténation de chaînes permet d'effectuer une injection SQL. Dans la requête ci-dessous, si une variable contient la valeur 1 or 1 = 1 , l'instruction UPDATE à jour toutes les lignes de la table:

    execute immediate 'update my_table set value = ''I have bad news for you'' where id = ' || id;
    

    La deuxième raison est la performance. Oracle analysera les requêtes sans paramètres à chaque exécution, tandis que la requête avec paramètre sera analysée une seule fois dans la session.

  2. Notez que lorsque le moteur de base de données exécute une instruction DDL, il exécute une validation implicite avant.

SQL dynamique Exemples Liés