204 votes

Qu'est-ce que Ad Hoc Query ?

Je suis en train de lire un livre sur SQL. Dans ce livre, il y a le terme Requête Ad Hoc ce que je ne comprends pas.

Qu'est-ce qu'une requête ad hoc ?

261voto

David Hedlund Points 66192

Ad hoc signifie en latin "à cette fin". On pourrait l'appeler une requête "à la volée", ou une requête "juste comme ça". C'est le genre de requête SQL que vous tapez en vrac lorsque vous en avez besoin.

var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;

...qui est une requête entièrement différente à chaque fois que cette ligne de code est exécutée, en fonction de la valeur du paramètre myId . Le contraire d'une requête ad hoc est une requête prédéfinie telle qu'une procédure stockée, dans laquelle vous avez créé une requête unique dans le but général de sélectionner une table (par exemple) et de transmettre l'ID comme variable.

21 votes

@David Hedlund votre requête est vulnérable à SQL injection attacks ...Vous devez utiliser le paramètre.

61 votes

@Paridokht : Certainement. Je ne préconise pas cette utilisation, j'explique le concept de requête ad hoc, ce qui était la question.

14 votes

@DavidHedlund : Oui, je comprends mais peut-être est-il préférable de le mentionner dans votre réponse car il y a des utilisateurs qui lisent ceci et n'ont aucune idée de cette attaque.

32voto

haltunbay Points 113

Une requête ad hoc est une requête qui ne peut être déterminée avant le moment où elle est émise. Elle est créée afin d'obtenir des informations lorsque le besoin s'en fait sentir et consiste en un langage SQL construit dynamiquement, généralement par des outils d'interrogation résidant sur le bureau.

Vérifiez : http://www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html

0 votes

Donc si je tape une requête statique et que je l'exécute une fois, ce n'est pas "ad hoc" ?

0voto

user3134258 Points 1

Les requêtes ad hoc sont celles qui ne sont pas déjà définies et qui ne sont pas nécessaires sur une base régulière, elles ne sont donc pas incluses dans l'ensemble typique de rapports ou de requêtes.

0 votes

Pouvez-vous expliquer davantage ce que vous écrivez ? Qu'est-ce que l'"ensemble typique" ; voulez-vous dire le code compilé ?

-1voto

xli Points 61

Il convient également d'ajouter que les requêtes ad hoc sont vulnérables aux attaques par injection SQL. Nous devrions essayer d'éviter de l'utiliser et utiliser plutôt des SQL paramétrés ( comme PreparedStatement en Java ).

8 votes

Une requête ad-hoc est pas vulnérable à l'injection SQL. Une requête non paramétrée qui accepte les entrées de l'utilisateur est vulnérable à une injection SQL.

0 votes

@Ben Une requête ad-hoc est toujours non paramétrée. Elle ne peut pas être attaquée par une injection SQL si nous n'exposons pas les variables aux utilisateurs ; mais le fait est que la requête ad-hoc est risquée pour l'injection SQL.

-4voto

Ravi Points 21

Une requête Ad-Hoc est :

  1. Question préétablie.
  2. Question préprogrammée.
  3. Question impromptue.
  4. Question qui ne donnera aucun résultat.

1 votes

Qu'est-ce que cela signifie en termes de SQL ? De plus, toutes les "Questions qui ne renvoient aucun résultat." ne sont pas ad hoc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X