DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Connecteurs Natifs/Accès Natifs / Connecteur Natif Oracle
  • Présentation
  • Remarques générales
  • Versions nécessaires
  • Unicode sur Oracle
  • Le blocage d'un fichier de données (table) se fait dans une transaction
  • Gestion de l'identifiant automatique en écriture : utilisation d'une séquence Oracle
  • Format des dates
  • Numéro d'enregistrement
  • Liste des tables accédées par le Connecteur Natif Oracle selon le schéma SYS
  • Gestion des synonymes
  • Valeurs par défaut des rubriques
  • Gestion des rubriques calculées
  • Spécificités générales
  • Options de l'analyse
  • Chaînes vides et valeur NULL
  • Rubriques de type Tableau
  • Contraintes d'intégrité référentielle
  • Blocage des enregistrements
  • Utilisation d'une requête (avec l'option hRequêteSansCorrection) avec les fonctions HAjoute, HModifie, ou HSupprime
  • Spécificités concernant les fonctions HFSQL et SQL
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Connecteur Natif Oracle : Spécificités et remarques
Connecteurs Natifs (Accès Natifs)Disponible uniquement avec ce type de connexion
Présentation
Les paragraphes suivants présentent les remarques générales et les spécificités du Connecteur Natif Oracle.
Remarques générales

Versions nécessaires

Attention : Cette version du Connecteur Natif Oracle fonctionne uniquement avec WINDEV et WEBDEV 2024.

Unicode sur Oracle

  • Pour gérer Unicode sur Oracle, il est nécessaire d'installer au minimum la couche client version 9i.
  • Si les conditions suivantes sont remplies, le mémo unicode est tronqué à 4000 caractères :
    • Utilisation de la condition de sélection LIKE avec la clause ESCAPE,
    • Mémo Unicode,
    • Serveur en version 9.

Le blocage d'un fichier de données (table) se fait dans une transaction

La fonction HBloqueFichier débute une transaction avant de bloquer la table en mode Exclusif. La fonction HDébloqueFichier valide la transaction et débloque la table.

Gestion de l'identifiant automatique en écriture : utilisation d'une séquence Oracle

Le type Identifiant automatique n'existant pas sur Oracle, l'importation d'une table Oracle ne crée pas de rubriques de ce type.
Cependant, il est possible sous l'éditeur d'analyses, de modifier les rubriques de type "Entier sur 4 " et / ou "Entier sur 8" pour les définir comme identifiant automatique. Dans ce cas, ces identifiants automatiques seront gérés par le Connecteur Natif Oracle (en ajout ou en modification) grâce à une "Séquence" Oracle nommée "WINDEV_SEQ". Si cette séquence n'existe pas, le Connecteur Natif Oracle crée cette séquence automatiquement.
Pour faire des ajouts ou des modifications d'enregistrements avec identifiant automatique, il est nécessaire :
  • de modifier l'analyse. En effet, pour une rubrique "Entier sur 4 " ou "Entier sur 8", cette rubrique peut être passée en type "Identifiant auto". Dans ce cas, le Connecteur Natif Oracle gérera cette rubrique comme un identifiant automatique.
  • soit de créer l'objet "séquence" nommé "WINDEV_SEQ" dans la base Oracle.
  • soit de donner le privilège "CREATE SEQUENCE" à l'utilisateur.

Format des dates

Lors de l'insertion ou de la modification d'une date dans une requête exécutée par la fonction SQLExec, le format spécifié par défaut pour le Connecteur Natif Oracle est le suivant : "AAAAMMJJHHmmSS".
En WINDEV 5.5, le format des dates dépendait des paramètres spécifiés lors de la connexion (paramètres de configuration par défaut de la couche client Oracle).
En WINDEV, pour modifier le format des dates par défaut, dans la fenêtre de description de la connexion utilisée, sélectionnez "Format par défaut de la connexion" dans la combo "Format des dates". Dans cette combo, il est également possible de spécifier un format de date personnalisé. Dans ce cas, ce format doit être compatible avec les requêtes d'insertion (ordre INSERT) et de modification (ordre UPDATE).
Remarque : Les dates vides correspondent à des chaînes complétées par des 0.

Numéro d'enregistrement

Il n'est pas possible de spécifier un numéro d'enregistrement différent de zéro dans les fonctions HEcrit et HLit. Le numéro d'enregistrement "zéro" correspond à l'enregistrement en cours.
De même, les fonctions HBloqueNumEnr et HDébloqueNumEnr ne peuvent être utilisées que sur l'enregistrement en cours.

Liste des tables accédées par le Connecteur Natif Oracle selon le schéma SYS

La liste des tables auxquelles le Connecteur Natif Oracle tente d'accéder selon le schéma SYS sont les suivantes :
  • V$VERSION
  • ALL_OBJECTS
  • ALL_IND_COLUMNS
  • SYS.ALL_TABLES
  • SYS.ALL_VIEWS
  • Optionnel : SYS.ALL_SOURCE
Par défaut, ces tables sont bloquées en lecture par Oracle. Il peut être nécessaire d'autoriser le SELECT sur ces tables.

Gestion des synonymes

Le Connecteur Natif Oracle gère les synonymes :
  • Il est possible d'accéder à un fichier directement par son nom ou son synonyme.
  • Les synonymes sont listés avec les vues par la fonction HListeFichier.
  • Les synonymes sont importés en tant que description de fichier dans l'analyse.
Attention : la fonction HCréation utilisée sur une description de fichier présente dans l'analyse crée toujours une table, quelque soit son origine (table, vue ou synonyme).

Valeurs par défaut des rubriques

Les valeurs par défaut des rubriques sont gérées par le Connecteur Natif Oracle. Ces valeurs par défaut peuvent être :
  • une valeur,
  • une formule SQL. Dans ce cas, l'expression SQL doit être reconnue par le moteur HFSQL et par la base Oracle.

Gestion des rubriques calculées

Des rubriques calculées peuvent être utilisées dans les fichiers de données.
La gestion des rubriques calculées est disponible à partir de Oracle version 11g minimum.
Spécificités générales

Options de l'analyse

  • Que les options "Sensible à la casse", "Sensible à l'accentuation", "Sensible à la ponctuation" soient cochées ou non dans l'éditeur d'analyses, la recherche sera toujours sensible à la casse, à l'accentuation et à la ponctuation.
  • Les options de l'analyse concernant les index full-text ne sont pas gérées par le Connecteur Natif Oracle.
  • Les options de l'analyse concernant l'indexation partielle des mémos texte ne sont pas gérées par le Connecteur Natif Oracle.

Chaînes vides et valeur NULL

Les valeurs "Chaîne vide" sont interprétées par Oracle comme la valeur NULL. Lors d'un parcours ascendant, l'ordre ORDER BY rejette toutes les valeurs NULL à la fin du parcours.

Rubriques de type Tableau

Les rubriques de type Tableau ne sont pas gérées par le Connecteur Natif Oracle. Si vous utilisez une rubrique tableau, seule la valeur de l'indice 1 du tableau sera manipulable avec les fonctions HFSQL (en écriture et en lecture).
Pour gérer ce type de rubrique, il est nécessaire de modifier la structure de vos fichier des données pour remplacer les rubriques indicées par plusieurs rubriques.
Remarque : En programmation il sera possible d'utiliser l'indirection pour manipuler ces rubriques de façon générique.
Le code suivant avec une rubrique indicée :
nIndiceRubrique est un entier
POUR nIndiceRubrique = 1 Ã€ 10
Fichier.RubriqueTableau[nIndiceRubrique] = "Valeur"
FIN
Devient avec des rubriques dont le nom contient un numéro:
nIndiceRubrique est un entier
POUR nIndiceRubrique = 1 Ã€ 10
{"Fichier.RubriqueTableau" + nIndiceRubrique, indRubrique} = "Valeur"
FIN

Contraintes d'intégrité référentielle

Les contraintes d'intégrité référentielle décrites dans l'analyse ne sont pas automatiquement créées sur la base de données avec la fonction HCréation.
Les contraintes d'intégrité référentielle doivent être décrites dans la base de données accédée.

Blocage des enregistrements

Les options de blocage (constantes hBlocageEcriture et hBlocageLectureEcriture) utilisables avec les fonctions HFSQL ont le même effet : blocage en écriture. En effet, les blocages en lecture ne sont pas supportés par Oracle.

Utilisation d'une requête (avec l'option hRequêteSansCorrection) avec les fonctions HAjoute, HModifie, ou HSupprime

Si vous manipulez une requête avec la constante hRequêteSansCorrection, il est nécessaire de démarrer une transaction avant d'utiliser cette requête avec les fonctions HAjoute, HModifie ou HSupprime. Cette transaction permet d'éviter l'erreur "ORA2002 : Extraction en rupture de séquence" lors du parcours de la requête.
Exemple :
S1 est une Source de Données
SQLTransaction(sqlDébut, MaConnexion)
HExécuteRequêteSQL(S1, MaConnexion, hRequêteSansCorrection, "select * from commande")
HLitPremier(S1)
TANTQUE PAS HEnDehors(S1)
HLitRecherchePremier(Client, CLCléUnique, S1.CLCléUnique)
SI HTrouve(Client) ALORS
Client.NbCommande = Commande.NbCommande
HModifie(Client)
FIN
HLitSuivant(S1)
FIN
SQLTransaction(sqlFin, MaConnexion)
Spécificités concernant les fonctions HFSQL et SQL
Les spécificités concernant l'utilisation des fonctions HFSQL avec le Connecteur Natif Oracle sont les suivantes :
SpécificitésFonctions concernées
La constante hAffecteParcours n'est pas prise en compte. A la fin de l'opération, le parcours continue à partir de l'enregistrement en cours avant l'ajout ou la modification.HAjoute, HModifie
La constante hDistinct n'est pas prise en compte : tous les enregistrements (y compris les doublons) sont parcourus.HAvance, HRecule,
HLitPrécédent, HLitSuivant
HPrécédent, HSuivant
Requête multi-fichiers.
Les fonctions HAjoute, HModifie et HSupprime ne sont pas supportées.
HAjoute,
HModifie,
HSupprime
Les fonctions HRecherche*, HPremier, HSuivant permettent de se positionner sur un enregistrement sans le lire.
Dans cette version, ces fonctions lisent également l'enregistrement. Ce problème sera corrigé dans une prochaine version.
HRecherche,
HPremier,
HSuivant
Après une erreur de doublons sur la fonction HModifie, la fonction HLit (utilisée avec la constante hNumEnrEnCours) ne lit pas l'enregistrement demandé.
Ce problème sera corrigé dans une prochaine version.
HLit
Après la fonction HAjoute, l'enregistrement n'est pas relu par le Connecteur Natif. Si les valeurs de l'enregistrement sont modifiées par la base de données (trigger sur Insert, ...), il est nécessaire d'utiliser la fonction HLit pour récupérer les valeurs modifiées.HAjoute
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 18/07/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale