2017-05-09 1 views
0

EDITED pour plus de clarté:Convertir la table en fichier physique AS400/DB2

J'ai créé une table dans DB2 en utilisant SQL. J'ai maintenant réalisé que je ne connaissais pas le format d'enregistrement pour le fichier physique créé et j'ai besoin d'un fichier logique pour définir les clés à utiliser dans le code RPG. Comment puis-je accomplir cela en utilisant SQL plutôt que DDS?

C'est ce que je voulais demander, vraiment, maintenant que j'en sais beaucoup plus sur le sujet.

+1

Une table créée avec SQL est un fichier physique. Recommencez pour ne pas confondre vos collègues. – danny117

+0

Accomplir «quoi» avec SQL? Si vous demandez comment créer un index SQL, exécutez une instruction SQL CREATE INDEX. Ou demandez-vous des formats d'enregistrement, et si oui, qu'en est-il d'eux? – user2338816

Répondre

3

Il n'y a vraiment aucune différence entre un fichier PF créé avec DDS et une table créée avec SQL DDL.

Les deux méthodes aboutissent à un objet * FILE avec un attribut de PF. L'objet résultant de l'une ou l'autre méthode peut être utilisé avec SQL ou avec un accès au niveau d'enregistrement RPG (RLA).

Vous pouvez créer des vues ou des index SQL LDS ou DDS sur une table PF créée par DDS ou une table créée par DDL SQL.

IBM fournit des outils pour générer un DDL SQL pour un objet créé par DDS, mais pas l'inverse. Vous pourriez être en mesure de trouver un outil tiers conçu pour générer DDS si vous perdez votre source DDS. La meilleure pratique aujourd'hui est d'utiliser SQL DDL; autant d'améliorations récentes de la base de données ne sont pas disponibles lors de l'utilisation de DDS.

Si vous pensez avoir besoin d'utiliser DDS pour une compatibilité avec RPG par exemple, vous êtes incorrect. Tout ce que vous devez faire est de tirer parti des mots-clés spécifiques à IBM i.

Au lieu de

create table my_long_table_name (
    my_long_column_name char(10) 
); 

Utilisez

create table my_long_table_name  
     for system name mytable ( 
    my_long_column_name     
    for mycol char(10)    
) rcdfmt mytabler;      
+0

Merci pour le pourboire, je vais l'essayer – Delfic

+0

Bonjour Charles. J'ai essayé le mot-clé "for" mais j'ai eu une erreur de syntaxe ... "Mot-clé FOR non attendu" – Delfic

+0

Le rcdfmt à la fin est censé avoir un nom différent de la table? – Delfic