Une requête peut être créé soit par l'assistant soit par saisie directe (ou copie...) du code SQL. Suivant le code de la requête, le mode HRequêteSansCorrection devra être utilisé (notamment si des noms de bibliothèque ou des ordres spécifiques sont présents), il faut dans ce cas spécifier la connexion dans la syntaxe de la requête.
Les requêtes de sélection "SELECT" vont retourner une source de donnée qui peut être parcourue et manipulée en programmation.
Remarque : il est possible de remplacer l'option MAIN des infos étendues du fichier ou l'option LF d'une clé par une requête SELECT dont les colonnes correspondent à la description du fichier.
hModifieFichier peut être utilisé si l'option SQLLIVE est active (valeur 1 ou 3) dans les infos étendues de la connexion.
Dans ce cas les données du résultat de la requête sont modifiables même si elles combinent plusieurs fichiers.
Par défaut des index sont créés sur chaque colonne de la requête, ce qui permet notamment la présence des loupes dans les tables. Cette fonctionnalité peut être désactivée par l'option SQLIDX des infos étendues de la connexion.
Les contrôles d'intégrité de l'AS/400 sont évidemment respectés.
Il n'est pas possible d'utiliser les indices de tableau dans une requête SQL.
Pour définir une condition sur une clé composée dans une requête SQL, il faut préciser les conditions de chacune des composantes de la clé.
Les filtres sur les requêtes ne sont pas supportés.
La fonction HExécuteRequete envoie et exécute directement une requête créée par l'éditeur, cette requête peut contenir des paramètres ou pas, elle peut être de type SELECT ou UPDATE, INSERT, DELETE...
La fonction HExécuteRequêteSQL permet d’envoyer directement des requêtes sous la forme d’une chaîne SQL et d’être utilisé conjointement avec la fonction HPrepareRequêteSQL, voir requêtes préparées.
Voir exemple Requêtes et SQL.