syntaxe 4GL/ESQL
Posted in 2007
Topics: Performance & Tuning, Connectivity: ESQL/C, 4GL & Embedded SQL
Translated from English by DrWatson — View original
utilisateur à la recherche de la syntaxe correcte pour créer des directives à l'intérieur des requêtes afin de forcer/remplacer le plan d'exécution de l'optimiseur, à utiliser en 4gl/esql. J'ai trouvé quelque chose qui fonctionne en SQL pur, mais qui est ignoré lorsque je le place à l'intérieur d'un programme. également, existe-t-il un moyen, une syntaxe, pour positionner CACHE à ON à l'intérieur du programme 4gl/esql, ou cela ne peut-il se faire qu'au niveau de l'utilisateur (.profile) ? le tout sous AIX merci
Le mer. 2007-08-08 à 13:35 -0400, sergio kapul a écrit : > je cherche la syntaxe correcte pour créer des directives à l'intérieur des > requêtes afin de remplacer le plan d'exécution des requêtes de l'optimiseur, > à utiliser en 4gl/esql. J'ai trouvé quelque chose qui fonctionne en SQL pur, mais qui est > ignoré quand je le place à l'intérieur d'un programme. Les directives d'optimiseur sont des commentaires, et les délimiteurs de commentaires en SQL sont également des délimiteurs de commentaires en I4GL. Essayez de placer le texte de la requête dans une chaîne de caractères et de préparer l'instruction à partir de celle-ci. HTH, -- Carsten Haese http://informixdb.sourceforge.net
Le 8 août à 13h35, « sergio kapul » <ska...@comcast.net> a écrit : > je cherche la syntaxe correcte pour créer des directives à l'intérieur > des requêtes afin de remplacer le plan d'exécution de l'optimiseur, > à utiliser en 4gl/esql. J'ai trouvé quelque chose qui fonctionne en SQL pur, mais c'est > ignoré quand je le place à l'intérieur d'un programme. Vous pouvez les intégrer en utilisant l'une des syntaxes suivantes (la dernière ne fonctionne qu'à partir du cSDK 3.00) : SELECT --+ <directives ici> SELECT {+ <directives ici>} SELECT /*+ <directives ici> */ Avant le cSDK 3.00, l'utilisation de /*+...*/ ne fonctionnera probablement qu'au sein d'un SQL intégré dans une chaîne de caractères construite pour une instruction préparée, puisque le préprocesseur C remplacera les commentaires par des espaces. Art S. Kagel > par ailleurs, existe-t-il un moyen, une syntaxe, pour positionner CACHE ON à l'intérieur > du programme 4gl/esql, ou cela ne peut-il se faire qu'au niveau de l'utilisateur > (.profile) ? > > le tout sous AIX > > merci
merci à tous, ce qui a fonctionné pour les directives, aussi bien en 4gl qu'en esql, c'est : placer la requête dans une chaîne de caractères, la préparer, puis déclarer un curseur avec la syntaxe {+ <directives>} une idée de la manière de positionner CACHE ON uniquement à l'intérieur d'un programme ?
Le 8 août à 18:35, « sergio kapul » <ska...@comcast.net> a écrit : > je cherche la syntaxe correcte pour créer des directives à l'intérieur > des requêtes afin de remplacer le plan d'exécution des requêtes de l'optimiseur, > à utiliser en 4gl/esql. J'ai trouvé quelque chose qui fonctionne en SQL direct, mais c'est > ignoré lorsque je le place à l'intérieur d'un programme. > > par ailleurs, existe-t-il un moyen, une syntaxe, pour positionner CACHE ON à l'intérieur > du programme 4gl/esql, ou bien cela ne peut-il se faire qu'au niveau de l'utilisateur > (.profile) ? > > le tout sous AIX > > merci En 4gl, vous pouvez utiliser un bloc SQL ... END SQL.