Procédure GENERATE_SQL
La procédure GENERATE_SQL génère les instructions SQL de langage de définition de données requises pour recréer un objet de base de données. Les résultats sont renvoyés dans le membre de fichier source de base de données spécifié, fichier de flux source, ou en tant qu'ensemble de résultats.
Le membre de fichier source de base de données ou le fichier STREAM du système de fichiers intégré (IFS) contiendra les instructions SQL générées. Si le fichier source de sortie est QTEMP/Q_GENSQL avec le nom de membre Q_GENSQL, le fichier source est également renvoyé en tant qu'ensemble de résultats.
Autorisation:
- *EXECUTE sur la bibliothèque contenant le fichier physique source
- Pour ajouter un membre:
- *OBJOPR et *ADD dans le fichier physique source
- Pour remplacer un membre:
- *OBJOPR, *DELETE, *ADD et *OBJMGT ou *OBJALTER dans le fichier physique source
- Droit d'exécution (*X) sur les données de chaque répertoire précédant le fichier STREAM en cours d'écriture et
- Lorsque le fichier STREAM existe:
- Droit d'écriture (*W) sur les données du fichier STREAM
- Lorsque le fichier STREAM n'existe pas:
- Droit d'écriture et d'exécution (*WX) sur le répertoire parent du fichier STREAM
- TABLE, VIEW, CONTRAINT ou TRIGGER
- *EXECUTE et *OBJOPR dans la bibliothèque, et
- *OBJOPR pour l'objet *FILE
- INDEX
- *EXECUTE et *OBJOPR dans la bibliothèque, et
- *OBJOPR pour l'objet *FILE, et
- *OBJOPR vers l'objet *FILE de base
- MASK ou PERMISSION
- *EXECUTE et *OBJOPR dans la bibliothèque, et au moins l'un des éléments suivants:
- *OBJOPR pour l'objet *FILE
- Utilisation de la fonction QIBM_DB_SECADM
- *EXECUTE et *OBJOPR dans la bibliothèque, et au moins l'un des éléments suivants:
- Alias
- *EXECUTE et *OBJOPR dans la bibliothèque, et
- *OBJOPR pour l'objet *FILE
- FUNCTION ou PROCEDURE
- *OBJOPR à la bibliothèque
- TYPE
- *EXECUTE et *OBJOPR dans la bibliothèque, et
- *OBJOPR pour l'objet *SQLUDT
- schéma
- *OBJOPR et *READ ou *EXECUTE sur l'objet *LIB
- Séquence
- *EXECUTE et *OBJOPR dans la bibliothèque, et
- *USE pour l'objet *DTAARA
- Variable
- *EXECUTE et *OBJOPR dans la bibliothèque, et
- *OBJOPR pour l'objet *SRVPGM
- référentiel de schémas XML
- *EXECUTE et *OBJOPR dans la bibliothèque, et
- *OBJOPR à l'objet *SQLXSR
- nom-objet-base-de-données
- Expression de type caractère ou chaîne graphique qui identifie le nom de l'objet de base de données pour lequel le langage de définition de données sera généré. Le nom SQL ou le nom du système peut être indiqué. Le nom est sensible à la casse. Les délimiteurs ne doivent pas être indiqués. Par exemple, un fichier dont le nom est "abc" doit être spécifié sous la forme abc. Un fichier dont le nom est ABC doit être indiqué en majuscules. Si le type d'objet est FUNCTION ou PROCEDURE, ce nom doit être le nom spécifique de la fonction ou de la procédure. Si TABLE ou VIEW est spécifié pour le type d'objet, le nom d'objet peut identifier un alias. Dans ce cas, l'objet vers lequel pointe l'alias sera généré. Une instruction CREATE ALIAS est générée uniquement si ALIAS est indiqué pour le type d'objet.
- nom-bibliothèque-objet-base-de-données
- Expression de type caractère ou chaîne graphique qui identifie le nom de la bibliothèque contenant l'objet pour lequel le langage de définition de données (DDL) sera généré. Le nom SQL ou le nom du système peut être indiqué. Le nom est sensible à la casse. Les délimiteurs ne doivent pas être indiqués. Ce nom est ignoré si le type d'objet indiqué est SCHEMA. Un caractère générique'%'peut être utilisé pour sélectionner plusieurs bibliothèques.
- type-objet-base-de-données
- Expression de type caractère ou chaîne graphique qui identifie le type de l'objet de base de données ou de l'attribut d'objet pour lequel le langage de définition de données est généré. Vous pouvez utiliser ces valeurs spéciales pour le type d'objet:
- Alias
- L'objet est un alias SQL.
- Contrainte
- L'attribut d'objet est une contrainte.
- FONCTION
- L'objet est une fonction SQL.
- INDEX
- L'objet est un index SQL.
- MASQUE
- L'objet est un masque de colonne SQL.
- Droit
- L'objet est un droit de ligne SQL.
- PROCEDURE
- L'objet est une procédure SQL.
- schéma
- L'objet est un schéma SQL.
- Séquence
- L'objet est une séquence SQL.
- TABLE
- L'objet est une table SQL ou un fichier physique.
- TRIGGER
- L'attribut d'objet est un déclencheur.
- TYPE
- L'objet est de type SQL.
- Variable
- L'objet est une variable globale SQL.
- VIS
- L'objet est une vue SQL ou un fichier logique.
- référentiel de schémas XML
- L'objet est un objet de référentiel de schémas XML.
- nom-fichier-source-base-de-données
- Expression alphanumérique ou de chaîne graphique qui identifie le nom du fichier source contenant les instructions SQL générées par la procédure. Le nom doit être un nom de système valide. Le nom est sensible à la casse. Si des délimiteurs sont requis pour que le nom soit valide, ils doivent être spécifiés. Par exemple, un fichier dont le nom est "abc" doit être indiqué entre guillemets. Un fichier dont le nom est ABC doit être indiqué en majuscules.
- nom-bibliothèque-fichier-source-base-de-données
- Expression de type caractère ou chaîne graphique qui identifie le nom de la bibliothèque contenant le fichier source contenant les instructions SQL générées par la procédure. Le nom doit être un nom de système valide. Le nom est sensible à la casse. Si des délimiteurs sont requis pour que le nom soit valide, ils doivent être spécifiés. Vous pouvez utiliser les valeurs spéciales suivantes pour le nom de la bibliothèque:Si database-source-file-library-name n'est pas spécifié, QTEMP est utilisé.
- *CURLIB
- Bibliothèque en cours du travail
- *LIBL
- Liste des bibliothèques
- membre-fichier-source-base-de-données
- Expression de chaîne de caractères ou graphique qui identifie le nom du membre de fichier source contenant les instructions SQL générées par la procédure. Le nom doit être un nom de système valide. Le nom est sensible à la casse. Si des délimiteurs sont requis pour que le nom soit valide, ils doivent être spécifiés. Vous pouvez utiliser les valeurs spéciales suivantes pour le nom de membre:
- *FIRST
- Premier membre de fichier physique de base de données trouvé.
- *LAST
- Dernier membre de fichier physique de la base de données trouvé.
Si des valeurs sont fournies pour database-source-file-library-name, database-source-file-nameet database-source-file-member , l'objet doit exister.
Si database-source-file-member n'est pas spécifié, Q_GENSQL sera utilisé.
- niveau de gravité
- Niveau de gravité auquel l'opération échoue. Si l'erreur rencontrée a un niveau de gravité supérieur à cette valeur, l'opération est interrompue. Les valeurs valides sont comprises entre 0 et 39 inclus. Toute erreur de gravité 40 entraîne l'échec de la procédure.
- option-remplacement
- Option de remplacement du membre de fichier source de base de données ou du fichier STREAM source. Les valeurs admises sont les suivantes :Si replace-option n'est pas spécifié, 1 est utilisé.
- 0
- Les instructions SQL résultantes sont ajoutées à la fin du membre de fichier source de base de données ou du fichier de flux source.
- 1
- Le membre de fichier source de base de données ou le fichier STREAM source est effacé avant l'ajout des instructions SQL résultantes. Si cette option est sélectionnée, l'effacement peut se produire même si une erreur est renvoyée par la procédure.
- option-formatage-instruction
- Option de formatage utilisée dans les instructions SQL générées. Les valeurs admises sont les suivantes :Si option-formatage-instruction n'est pas spécifiée, 1 est utilisé.
- 0
- Aucun caractère de formatage supplémentaire n'est ajouté aux instructions SQL générées.
- 1
- Des caractères de fin de ligne et des caractères de tabulation supplémentaires sont ajoutés aux instructions SQL générées.
- format-date
- Format de date utilisé pour les constantes de date dans une instruction SQL CREATE TABLE générée. Le format de date ne peut pas s'appliquer aux constantes de date qui sont au format ISO, EUR, USA ou JIS dans une instruction CREATE VIEW, CREATE TRIGGER, CREATE FUNCTION, CREATE PROCEDURE, CREATE MASK ou CREATE PERMISSION.
- séparateur de date
- Séparateur de date utilisé pour les constantes de date dans une instruction SQL CREATE TABLE générée. Le séparateur de date ne peut pas s'appliquer aux constantes de date qui sont au format ISO, EUR, USA ou JIS dans une instruction CREATE VIEW, CREATE TRIGGER, CREATE FUNCTION, CREATE PROCEDURE, CREATE MASK ou CREATE PERMISSION.
- format-heure
- Format utilisé pour les constantes de temps dans une instruction SQL CREATE TABLE générée. Le format d'heure ne peut pas s'appliquer aux constantes de temps au format ISO, EUR, USA ou JIS dans une instruction CREATE VIEW, CREATE TRIGGER, CREATE FUNCTION, CREATE PROCEDURE, CREATE MASK ou CREATE PERMISSION.
- séparateur d'heure
- Séparateur d'heure utilisé pour les constantes de temps dans une instruction SQL CREATE TABLE générée. Le séparateur d'heure peut ne pas s'appliquer aux constantes de temps qui sont au format ISO, EUR, USA ou JIS dans une instruction CREATE VIEW, CREATE TRIGGER, CREATE FUNCTION, CREATE PROCEDURE, CREATE MASK ou CREATE PERMISSION.
- option de dénomination
- Convention de dénomination utilisée pour les noms qualifiés dans les instructions SQL générées. Les valeurs admises sont les suivantes :Si naming-option n'est pas spécifié, SQL est utilisé.
- langage SQL
- Syntaxe de schema.table
- SYS
- syntaxe de fichier / bibliothèque
- séparateur décimal
- Séparateur décimal utilisé pour les constantes numériques. Les valeurs admises sont les suivantes :Si decimal-point n'est pas spécifié, . est utilisé.
- .
- Séparateur de période
- ,
- Séparateur Virgule
- option-normes
- L'option des normes indique si les instructions SQL générées doivent contenir des extensions Db2® for i ou si les instructions doivent être conformes aux normes SQL de la famille Db2 ou aux normes ANS et ISO SQL. Les valeurs admises sont les suivantes :Si standards-option n'est pas spécifié, 0 est utilisé.
- 0
- Les extensions Db2 for i peuvent être générées dans des instructions SQL.
- 1
- Les instructions SQL générées doivent être conformes aux instructions SQL communes à la famille Db2 .
- 2
- Les instructions SQL générées doivent être conformes aux normes SQL ANSI et ISO.
- option de suppression
- L'option de suppression indique si les instructions SQL DROP (ou ALTER) doivent être générées avant l'instruction CREATE pour supprimer l'objet spécifié. Les valeurs admises sont les suivantes :Si drop-option n'est pas spécifié, 0 est utilisé.
- 0
- Les instructions DROP ne doivent pas être générées.
- 1
- Des instructions DROP doivent être générées.
- niveau message
- Niveau de gravité auquel les messages sont générés. Si des erreurs dont le niveau de gravité est supérieur à cette valeur se produisent, un message est généré dans la sortie. Les valeurs valides sont comprises entre 0 et 39 inclus. Le niveau de message doit être inférieur ou égal au niveau de gravité.
- option-commentaire
- L'option de commentaire indique si les instructions SQL COMMENT doivent être générées si un commentaire existe sur l'objet de base de données spécifié. Si les commentaires ne sont pas pris en charge par l'objet de base de données spécifié, l'option de commentaire est ignorée. Les valeurs admises sont les suivantes :Si comment-option n'est pas spécifié, 1 est utilisé.
- 0
- Les instructions SQL COMMENT ne doivent pas être générées.
- 1
- Les instructions SQL COMMENT doivent être générées. Si le type d'objet de base de données spécifié est une table ou une vue, des instructions SQL COMMENT sont également générées pour les colonnes de la table ou de la vue.
2
Les instructions SQL COMMENT doivent être générées. Si l'objet de base de données indiqué n'a pas de commentaire et que son type est INDEX, SEQUENCE, TABLE, TYPE, VARIABLE, VIEW ou XSR, le texte de l'objet système est utilisé pour le commentaire. 
- option-libellé
- L'option label indique si les instructions SQL LABEL doivent être générées si un label existe sur l'objet de base de données indiqué. Si les libellés ne sont pas pris en charge par l'objet de base de données spécifié, l'option de libellé est ignorée. Les valeurs admises sont les suivantes :Si option-libellé n'est pas spécifié, 1 est utilisé.
- 0
- Les instructions SQL LABEL ne doivent pas être générées.
- 1
- Les instructions SQL LABEL doivent être générées. Si le type d'objet de base de données spécifié est une table ou une vue, les instructions SQL LABEL sont également générées pour les colonnes de la table ou de la vue.
- option-en-tête
- L'option d'en-tête indique si un en-tête doit être généré avant l'instruction CREATE. L'en-tête se compose de commentaires qui décrivent la version, la date et l'heure, la base de données relationnelle et certaines des options utilisées pour générer les instructions SQL. Les valeurs admises sont les suivantes :Si header-option n'est pas spécifié, 1 est utilisé.
- 0
- Un en-tête ne doit pas être généré.
- 1
- Un en-tête doit être généré.
- option-déclencheur
- L'option de déclencheur indique si les déclencheurs doivent être générés lorsque le type d'objet est TABLE ou VIEW. Les valeurs admises sont les suivantes :Si trigger-option n'est pas spécifié, 1 est utilisé.
- 0
- Les déclencheurs ne doivent pas être générés.
- 1
- Des déclencheurs doivent être générés.
- option-contrainte
- L'option de contrainte indique si les contraintes doivent être générées lorsque le type d'objet est TABLE. Les valeurs admises sont les suivantes :Si constraint-option n'est pas spécifiée, 1 sera utilisé.
- 0
- Les contraintes ne doivent pas être générées.
- 1
- Des contraintes doivent être générées.
- 2
- Les contraintes doivent être générées dans le cadre de l'instruction CREATE TABLE.
- option-nom-système
- L'option de nom de système indique si une clause FOR SYSTEM NAME doit être générée pour le nom de système lorsqu'elle est différente du nom SQL et que le type d'objet est INDEX, TABLE, VIEW, SEQUENCE, ou VARIABLE. Les valeurs admises sont les suivantes :Si system-name-option n'est pas spécifié, 1 sera utilisé.
- 0
- Une clause FOR SYSTEM NAME ne doit pas être générée.
- 1
- Une clause FOR SYSTEM NAME doit être générée.
- option-privilèges
- L'option de privilèges indique si les instructions SQL GRANT doivent être générées sur l'objet de base de données spécifié. Si les privilèges ne sont pas pris en charge par l'objet de base de données spécifié, l'option de privilèges est ignorée. Les valeurs admises sont les suivantes :Si privileges-option n'est pas spécifié, 1 sera utilisé.
- 0
- Les instructions SQL GRANT ne doivent pas être générées.
- 1
- Des instructions SQL GRANT doivent être générées.
- ccsid-option
- L'option CCSID indique si l'attribut CCSID doit être généré pour les définitions de colonne lorsque le type d'objet est TABLE. Les valeurs admises sont les suivantes :Si ccsid-option n'est pas spécifié, 1 sera utilisé.
- 0
- L'attribut CCSID ne doit pas être généré.
- 1
- L'attribut CCSID doit être généré.
- option de création ou de remplacement
- L'option de création ou de remplacement indique si CREATE OR REPLACE doit être généré pour l'objet de base de données indiqué dans l'instruction CREATE. Cette option est ignorée si l'objet de base de données indiqué ne prend pas en charge CREATE OR REPLACE. Les valeurs admises sont les suivantes :Si l'option create-or-replace-option n'est pas spécifiée, 0 est utilisé.
- 0
- CREATE OR REPLACE ne doit pas être généré.
- 1
- CREATE OR REPLACE doit être généré.
- option-brouillage
- L'option de brouillage indique si une instruction SQL brouillée doit être renvoyée pour les fonctions SQL, les procédures SQL ou les déclencheurs SQL qui n'ont pas été créés à l'aide d'instructions brouillées. Cette option est ignorée si l'option des normes n'est pas'0'. Cette option est également ignorée si l'objet n'est pas une fonction, une procédure ou un déclencheur SQL. Cette option est ignorée si l'objet est déjà brouillé. La définition de l'option de brouillage = 0 ne peut pas être utilisée pour obtenir l'instruction SQL non brouillée pour un objet brouillé. Les valeurs admises sont les suivantes :Si obfuscate-option n'est pas spécifié, 0 est utilisé.
- 0
- Une instruction brouillée ne doit pas être générée.
- 1
- Une instruction brouillée doit être générée pour les fonctions SQL, les procédures SQL ou les déclencheurs SQL.
- option-activation-contrôle-accès
- L'option d'activation du contrôle d'accès aux lignes et aux colonnes indique si une instruction ALTER TABLE permettant d'activer le contrôle d'accès aux lignes et aux colonnes doit être générée lorsque le type d'objet est TABLE. Cette option est ignorée si l'option standard n'est pas'0'ou'1'. Les valeurs admises sont les suivantes :Si activate-access-control-option n'est pas spécifié, 1 sera utilisé.
- 0
- Le contrôle d'accès aux lignes et aux colonnes ne doit pas être généré.
- 1
- L'activation du contrôle d'accès aux lignes et aux colonnes doit être générée.
- option-masque-et-autorisation
- L'option de masque et de droits d'accès indique si les droits d'accès aux lignes et les masques de colonne doivent être générés lorsque le type d'objet est TABLE. Cette option est ignorée si l'option standard n'est pas'0'ou'1'. Les valeurs admises sont les suivantes :Si mask-and-permission-option n'est pas spécifié, 1 est utilisé.
- 0
- Les droits et les masques ne doivent pas être générés.
- 1
- Les droits et les masques doivent être générés.
- option-nom-qualifié
- L'option de nom qualifié indique si des noms qualifiés ou non qualifiés doivent être générés pour l'objet de base de données indiqué. Les valeurs admises sont les suivantes :Si qualified-name-option n'est pas spécifié, 0 est utilisé.
- 0
- Les noms d'objet qualifiés doivent être générés. Les noms non qualifiés dans le corps des routines SQL restent non qualifiés.
- 1
- Les noms d'objet non qualifiés doivent être générés lorsqu'une bibliothèque correspondant au nom de la bibliothèque d'objets de base de données est trouvée. Toute référence d'objet SQL ou de colonne qualifiée RDB sera générée dans sa forme complète. Par exemple, les références rdb-name.schema-name.table-name et rdb-name.schema-name.table-name.column-name conserveront leur qualification complète.
- option-index-supplémentaire
- L'option d'index supplémentaire indique si des instructions CREATE INDEX supplémentaires seront générées pour les fichiers physiques ou logiques avec clé créés par DDS. Les valeurs admises sont les suivantes :Si additional-index-option n'est pas spécifié, 0 sera utilisé.
- 0
- Des instructions CREATE INDEX supplémentaires ne seront pas générées.
- 1
- Une instruction CREATE INDEX supplémentaire sera générée qui correspond à l'index d'un fichier physique à clé créé par DDS. Si le fichier physique comporte une contrainte PRIMARY KEY, aucune instruction CREATE INDEX n'est générée.
- option-index-instead-of-view
- L'option d'index au lieu de vue indique si une instruction CREATE INDEX ou CREATE VIEW doit être générée pour un fichier logique à clé créé par DDS. Les valeurs admises sont les suivantes :Si index-instead-of-view-option n'est pas spécifié, 0 sera utilisé.
- 0
- Une instruction CREATE VIEW sera générée.
- 1
- Une instruction CREATE INDEX sera générée et elle correspondra à l'index d'un fichier logique à accès par clés créé dans un DDS.
- option-temporelle
- L'option temporelle indique si une instruction CREATE TABLE et une instruction ALTER TABLE seront générées lorsque le type d'objet est TABLE et que la table est définie en tant que table temporelle. Cette option est ignorée si l'objet n'est pas une table temporelle ou si l'option standard n'est pas'0'ou'1'. Les valeurs admises sont les suivantes :
- 0
- Une instruction CREATE TABLE sera générée.
- 1
- Une instruction CREATE TABLE sera générée et une instruction ALTER TABLE sera générée pour ajouter la gestion des versions.
- 2
- Seule une instruction ALTER TABLE sera générée pour ajouter la gestion des versions.
- fichier-flux-source
- Expression de type caractère ou chaîne graphique qui identifie le fichier STREAM source contenant les instructions SQL générées par la procédure. Ce paramètre est ignoré sauf si database-source-file-name a la valeur *STMF.
Si le fichier n'existe pas, il sera créé à l'aide du CCSID indiqué par source-stream-file-ccsid. Lorsque des lignes sont écrites dans le fichier, source-stream-file-end-of-line détermine la fin de la séquence de ligne, le cas échéant, à ajouter à chaque ligne.
Lorsque source-stream-file est utilisé, les valeurs fournies pour database-source-file-library-name et database-source-file-member sont ignorées.
Ecriture dans QSYS.LIB n'est pas pris en charge.
- source-fichier-flux-fin-de-ligne
- Expression de caractère ou de chaîne graphique qui définit le ou les caractères de fin de ligne qui seront ajoutés à la fin de chaque ligne lors de l'écriture dans source-stream-file. Le caractère de retour chariot est toujours X’0D’. En fonction du CCSID du fichier STREAM source, le caractère de saut de ligne est X’25’ pour un CCSID EBCDIC et X’0A’ pour les CCSID ASCII et UTF-8 . Les valeurs admises sont les suivantes :
- source-stream-file-ccsid
- Valeur entière qui définit le CCSID à utiliser si un nouveau fichier STREAM source est créé. Si source-stream-file est spécifié et que le fichier STREAM source n'existe pas, il est créé avec cette valeur CCSID. La valeur 0 indique que le CCSID du travail par défaut doit être utilisé. Le CCSID 65535 ne peut pas être indiqué.
Si source-stream-file-ccsid n'est pas spécifié, 0 est utilisé.
Ce paramètre est ignoré lors de l'écriture dans un fichier source.
Exemples
- Générez un langage de définition de données pour toutes les tables d'un schéma et renvoyez la source en tant qu'ensemble de résultats.
CALL QSYS2.GENERATE_SQL('%', 'SAMPLE_CORPDB', 'TABLE', REPLACE_OPTION => '0'); - Générez un DDL pour tous les index commençant par'X' dans le schéma SAMPLE_CORPDB, placez la sortie dans un fichier nommé DDLSOURCE/GENFILE membre INDEXSRC.
CALL QSYS2.GENERATE_SQL('X%', 'SAMPLE_CORPDB', 'INDEX', 'GENFILE', 'DDLSOURCE', 'INDEXSRC', REPLACE_OPTION => '0'); - Générez un langage de définition de données pour une seule table et incluez les contraintes dans une instruction CREATE OR REPLACE TABLE.
CALL QSYS2.GENERATE_SQL('EMPLOYEE', 'SAMPLE_CORPDB', 'TABLE', 'GENFILE', 'DDLSOURCE', 'MASTERSRC', CREATE_OR_REPLACE_OPTION => '1', CONSTRAINT_OPTION => '2'); - Générez le langage de définition de données pour MYLIB.MYTABLE, placement de la sortie dans le fichier de flux source /usr/mytable_ddl.
CALL QSYS2.GENERATE_SQL(DATABASE_OBJECT_NAME => 'MYTABLE', DATABASE_OBJECT_LIBRARY_NAME => 'MYLIB', DATABASE_OBJECT_TYPE => 'TABLE', DATABASE_SOURCE_FILE_NAME =>'*STMF', SOURCE_STREAM_FILE =>'/usr/mytable_ddl');
