A partir de plusieurs instructions SQL, vous pouvez générer
des objets d'accès aux données ou des méthodes intégrées utilisant du code pureQuery. Ces instructions peuvent soit se présenter sous forme de scripts SQL placés dans le plan
de travail, soit être incluses dans des fichiers script au sein du système de fichiers.
Pourquoi et quand exécuter cette tâche
Cette fonctionnalité est disponible ou non, selon la configuration de votre
licence. Vous pouvez travailler avec des scripts SQL relevant soit de projets
Java compatibles pureQuery dans la perspective
Java, soit de projets de développement de données
dans la perspective Développement de routine et de code SQL. Vous pouvez travailler avec des scripts SQL qui sont
ouverts dans l'éditeur SQL et XQuery et vous pouvez également importer des instructions
SQL contenues dans des fichiers script.
Un script SQL peut contenir une ou
plusieurs instructions SQL. L'assistant que vous utilisez pour générer le code pureQuery
va dépendre du nombre d'instructions SQL contenues dans le script ou du nombre
d'instructions que vous sélectionnez. Pour les scripts incluant une unique instruction
SQL et pour les scripts dans lesquels vous sélectionnez une unique instruction SQL, voir Génération de code pureQuery à partir d'instructions SQL uniques.
Vous pouvez utiliser ce
processus pour générer du code pureQuery applicable exclusivement à des instructions
SELECT, INSERT, UPDATE, DELETE ou CALL valides. Si une méthode JDBC prepareStatement()
d'une instruction SQL génère des erreurs, une boîte de message affiche le
message d'erreur renvoyé.
Procédure
Pour
générer du code pureQuery à partir de plusieurs instructions SQL :
- Ouvrez l'assistant Génération du code pureQuery à partir d'instructions
SQL et suivez l'une des méthodes ci-après :
Option |
Description |
Pour les instructions SQL contenues dans un script SQL ouvert avec l'éditeur
SQL et XQuery : |
- Facultatif : Si vous ne voulez générer du code pureQuery que pour certaines
instructions SQL portées dans le script, sélectionnez chacune de ces instructions dans
son intégralité. Si vous ne sélectionnez aucune instruction SQL, le code pureQuery est
généré pour toutes les instructions SQL.
- A l'aide du bouton droit de la souris, cliquez soit sur les instructions SQL que
vous avez sélectionnées, soit n'importe où dans l'éditeur si vous n'avez sélectionné
aucune instruction ; sélectionnez ensuite Générer le code pureQuery.
|
Pour les instructions SQL contenues dans un script SQL relevant d'un projet Java compatible pureQuery : |
- Passez dans la perspective Java.
- Cliquez avec le bouton droit de la souris sur le fichier .sql du projet contenant
les instructions SQL, puis sélectionnez Générer le code pureQuery.
|
Pour les instructions SQL contenues dans un script SQL relevant d'un projet
de développement de données : |
- Basculez vers la perspective Développement de routine et de code SQL.
- Développez le dossier Scripts SQL du projet.
- Cliquez avec le bouton droit de la souris sur le script contenant les instructions SQL, puis sélectionnez Générer le code pureQuery.
|
Pour les instructions SQL contenues dans un fichier script du système de fichiers : |
- Sélectionnez .
- Dans l'assistant Nouveau, développez le noeud Données, sélectionnez Interface pureQuery de méthodes annotées puis cliquez sur Suivant.
|
- Entrez les informations demandées dans la page Génération de code pureQuery puis
cliquez sur Suivant. Si vous avez ouvert l'assistant à partir d'un script SQL dans le plan de
travail, la liste des Instructions de la page Instructions SQL
est remplie avec les instructions SQL de ce script.
- Pour importer des instructions SQL depuis un fichier script du système de fichiers,
procédez comme suit :
- Indiquez le module de terminaison utilisé par les instructions SQL du fichier.
- Cliquez sur Importer, puis sélectionnez le fichier script.
- Facultatif : Pour renommer un bean ou une méthode dans la liste, cliquez deux fois sur le nom
que vous souhaitez changer puis entrez le nouveau nom. Si vous renommez un bean, le nom par défaut de la méthode correspondante est mis
à jour avec le nouveau nom du bean.
- Facultatif : Si vous avez une instruction SQL SELECT, vous pouvez vérifier et éditer les
informations à générer concernant le bean en cliquant sur cette instruction SELECT dans
la liste puis en cliquant sur Détails.
- Facultatif : Si vous avez une instruction SQL CALL, vous pouvez vérifier et éditer le
gestionnaire d'appels personnalisé à utiliser dans la méthode générée en cliquant sur
cette instruction CALL dans la liste puis en cliquant sur Détails.
- Suivez les étapes de l'assistant. Pour afficher des informations sur les différentes zones de l'assistant, appuyez sur F1.
- Cliquez sur Terminer pour générer les fichiers que vous avez spécifiés.
Résultats
Lorsque vous générez du code pureQuery,
le plan de travail crée un bean que vous pouvez utiliser pour accéder à votre
base de données. Par exemple, vous pouvez générer du code à partir d'une instruction UPDATE ou d'une instruction SELECT. Lorsque vous générez
du code à partir d'une instruction SELECT, le plan de travail crée un bean que vous pouvez utiliser
pour conserver les résultats de la requête.
Si vous n'utilisez pas de clauses AS dans les instructions SELECT
qui produisent des jointures ou des unions, ou qui contiennent des colonnes résultantes,
les résultats de la requête peuvent contenir des colonnes dont le nom n'est pas unique. La capacité du plan de travail à résoudre cet incident lors de la génération d'un bean pour représenter les résultats de la requête dépend du type de base de données utilisé par votre application.
- DB2 for Linux, UNIX,
and Windows ; DB2 for z/OS ; Informix Dynamic Server : le
plan de travail utilise l'annotation @Column sur les propriétés associées aux colonnes portant le même nom qu'une ou plusieurs autres colonnes.
Par exemple, si votre application exécute la simple requête suivante :
select a.col1, b.col1 from a, b where a.id=b.id;
les méthodes
set() pour les propriétés correspondantes dans les beans contenant les résultats de requête doivent inclure des annotations
@Column indiquant le nom de la table dans laquelle apparaissent les deux colonnes
id :
public class JoinExample{
private int a_id;
private int b_id;
@Column (name="id", table="a")
public void setA_id (int a_id)
{
this.a_id = a_id;
}
public int getA_id ()
{
return a_id;
}
@Column (name="id", table="b")
public void setB_id (int b_id)
{
this.b_id = b_id;
}
public int getB_id ()
{
return b_id;
}
}
- Oracle : le plan de travail n'utilise pas l'attribut table de l'annotation @Column pour mapper les colonnes problématiques aux propriétés du bean. Vous devez utiliser l'une des méthodes suivantes pour les mapper :
- Utilisez
la clause AS de l'instruction SELECT pour affecter des noms uniques
aux colonnes dans les résultats de la requête.
- Utilisez une classe RowHandler pouvant être utilisée
avec les colonnes des résultats de la requête par
leur numéro d'index plutôt que par leur nom. Voir L'interface RowHandler <ROW>.