Déclarations SQL prises en charge et non prises en charge
Le service de traduction SQL est conforme avec ANSI niveau 2. Cette fonctionnalité prend en charge plusieurs déclarations SQL, mais pas toutes. Il est aussi possible que le serveur de rapports et certains moteurs RDBMS prennent en charge la syntaxe alpha1 CONCAT alpha2. Consultez Déclarations SQL prises en charge et Déclarations SQL non prises en charge.
De nombreuses déclarations SQL prises en charge se prêtent à la traduction de dialecte. Cette fonctionnalité permet à un serveur d'acheminer des requêtes SQL entrantes vers des sous-serveurs qui sont conformes avec SQL et des adaptateurs de données, si possible. La traduction de dialecte évite la traduction vers le langage de manipulation de données (DML) du serveur de rapports, tout en conservant la transparence de l'emplacement des données. Elle transforme une déclaration SQL standard en une déclaration qui peut être traitée par le moteur SQL de destination, tout en conservant le sens sémantique de la déclaration.
Remarque : comme le traducteur SQL est conciliant envers ANSI niveau 2, il se peut que certaines requêtes qui fonctionnaient dans des versions précédentes ne fonctionnent plus.
x
Référence : Déclarations SQL prises en charge
Le service de traduction SQL prend en charge :
- SELECT, y compris SELECT ALL et SELECT DISTINCT.
- CREATE TABLE. Les types de données prises en charge pour CREATE TABLE sont : REAL, DOUBLE PRECISION, FLOAT, INTEGER, DECIMAL, CHARACTER, SMALLINT, DATE, TIME et TIMESTAMP.
- INSERT, UPDATE et DELETE, pour les sources de données IMS et FOCUS relationnelles.
- Les équijonctions et les non équijonctions.
- Les jointures externes, soumises à certaines limitations. Consultez Jointures SQL.
- CREATE VIEW et DROP VIEW.
- PREPARE et EXECUTE.
- Les identificateurs délimités de noms de table et de colonne. Les noms de table et de colonne contenant des espaces incorporés ou d'autres caractères spéciaux dans la liste SELECT doivent être entourés de guillemets.
- Les noms de colonne qualifiés par des noms de table ou par des balises de table.
- Les opérateurs UNION [ALL], INTERSECT [ALL] et EXCEPT [ALL].
- Les sous-interrogations non corrélées pour toutes les requêtes du prédicat WHERE et de la liste FROM.
- Les sous-interrogations corrélées pour les requêtes candidates à la traduction de dialecte vers un RDBMS prenant en charge cette fonctionnalité. Notez que les sous-interrogations corrélées ne sont pas prises en charge pour FOCUS et d'autres sources de données non relationnelles.
- Les constantes numériques, littéraux et expressions de la liste SELECT.
- Les fonctionnalités scalaires pour les interrogations qui se prêtent à la traduction de dialecte si le moteur RDBMS prend en charge le type de fonctionnalité scalaire. Les types de fonctionnalité scalaire pris en charge sont : ABS, CHAR, CHAR_LENGTH, CONCAT, COUNTBY, DATE, DAY, DAYS, DECIMAL, EDIT, EXTRACT, FLOAT, HOUR, IF, INT, INTEGER, LCASE, LENGTH, LOG, LTRIM, MICROSECOND, MILLISECOND, MINUTE, MONTH, POSITION, RTRIM, SECOND, SQRT, SUBSTR (ou SUBSTRING), TIME, TIMESTAMP, TRIM, VALUE, UCASE et YEAR.
- L'opérateur de concaténation, '||', utilisé avec des littéraux ou des colonnes alphanumériques.
- Les fonctions d'agrégation suivantes : COUNT, MIN, MAX, SUM et AVG.
- Les expressions suivantes peuvent apparaître dans des conditions : CASE, NULLIF et COALESCE.
- Les littéraux de date, d'heure et d'estampille temporelle à plusieurs différents formats. Consultez Support du traducteur SQL pour les champs de date, d'heure et d'estampille temporelle.
- Toutes les requêtes contenant ANY, SOME et ALL qui ne contiennent pas =ALL, <>ANY et <>SOME.
- =ALL, <>ANY et <>SOME pour les requêtes qui se prêtent à la traduction de dialecte si le moteur RDBMS prend en charge des sous-interrogations quantifiées.
- Les registres spéciaux USER, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_EDASQLVERSION et CURRENT_TIMEZONE.
- Les prédicats NULL et NOT NULL
- Les prédicats LIKE et NOT LIKE.
- Les prédicats IN et NOT IN.
- L'arithmétique de date et d'heure.
- Les prédicats EXISTS et NOT EXISTS.
- Les clauses GROUP BY exprimées avec des noms de colonne explicites.
- Les clauses ORDER BY exprimées avec des noms de colonne ou des numéros de colonne.
- La fonctionnalité FOR FETCH ONLY pour contourner le verrouillage d'enregistrements.
- La notation décimale continentale (CDN) lorsque la variable CDN est définie.
- Support de langue nationale (NLS).
x
Référence : Déclarations SQL non prises en charge
Le service de traduction SQL ne prend pas en charge :
- Plus de quinze jointures par SELECT. Cette limite est définie par SQL. FOCUS prend en charge jusqu'à seize jointures.
- Des ALIAS dans des fichier maîtres et l'utilisation d'options de formatage pour formater la sortie.
- Les troncatures uniques de noms de colonne.
- Les colonnes définies temporairement. Les colonnes définies permanentes, définies dans le catalogue dynamique du serveur iWay ou dans le fichier maître, sont prises en charge.
- Les sous-interrogations corrélées pour la génération DML.
x
Référence : Mots réservés du traducteur SQL
Les mots suivants ne peuvent pas être utilisés comme noms de champs dans un Fichier Master qui est utilisé avec le traducteur SQL :
- ALL
- NB
- SUM
- MAX
- MIN
- MOYENNE
- CURRENT
- DISTINCT
- USER