Chaque colonne d'un jeu de résultats est associée à une variable. Un en-tête de script spécifie l'association entre les colonnes du jeu de résultats et la variable. Les valeurs des enregistrements renvoyés sont stockées dans ces variables, qui sont alors validées comme valeurs d'attribut d'objet.
L'en-tête de script est contenu entre accolades { }. Ces variables sont répertoriées entre crochets, et sont séparées les unes des autres par une virgule. Il existe une colonne pour chaque variable dans l'instruction Select qui suit l'en-tête.
Par exemple :
{OWNER, @OBJTCODE, SCRIPT, @OBJTLABL} SELECT U.USER_NAME, P.PROC_NAME, P.PROC_DEFN, P.REMARKS FROM SYSUSERPERMS U,SYSPROCEDURE P WHERE [%SCHEMA% ? U.USER_NAME='%SCHEMA%' AND] P.CREATOR=U.USER_ID ORDER BY U.USER_NAME
La liste des variables possibles correspond à la liste des variables établie dans la section Variables de MPD.
Chaque partie de l'en-tête (séparée par des virgules) est associée aux informations suivantes :
Nom de la variable (obligatoire). Voir l'exemple dans Traitement avec des noms de variable
Le mot clé ID suit chaque nom de variable. ID signifie que la variable fait partie de l'identifiant
Le mot clé ... (points de suspension) signifie que la variable doit être concaténée pour toutes les lignes renvoyées par la requête SQL et ayant les mêmes valeurs pour les colonnes d'ID
Retrieved_value = PD.value répertorie l'association entre une valeur extraite et une valeur PowerAMC. Une table de conversion permet de convertir chaque valeur de l'enregistrement (table système) en une autre valeur (dans PowerAMC). Ce mécanisme est un mécanisme alternatif. Voir l'exemple dans Traitement avec une table de conversion
La seule information obligatoire est le nom de variable. Toutes les autres informations sont facultatives. Les mots clés ID et ... (points de suspension) sont mutuellement exclusifs.
{TABLE ID, ISPKEY ID, CONSTNAME ID, COLUMNS ...} select t.table_name, 1, null, c.column_name + ', ', c.column_id from systable t, syscolumn c where etc..
Dans ce script, l'identifiant est défini comme TABLE + ISKEY+ CONSTNAME.
Dans les lignes de résultat renvoyées par le script SQL, les valeurs du quatrième champ sont concaténées dans le champ COLUMNS tant que ces valeurs d'ID sont identiques.
SQL Result set Table1,1,null,'col1,' Table1,1,null,'col2,' Table1,1,null,'col3,' Table2,1,null,'col4,' In PowerAMC memory Table1,1,null,'col1,col2,col3' Table2,1,null,'col4'
Dans l'exemple, COLUMNS va contenir la liste des colonnes séparées par des virgules. PowerAMC va traiter le contenu du champ COLUMNS pour supprimer la dernière virgule.
La syntaxe insérée immédiatement derrière un champ dans l'en-tête est la suivante :
(SQL value1 = PowerAMC value1, SQL value2 = PowerAMC value2, * = PowerAMC value3)
dans laquelle * représente toutes les autres valeurs.
Par exemple :
{ADT, OWNER, TYPE(25=JAVA , 26=JAVA)} SELECT t.type_name, u.user_name, t.domain_id FROM sysusertype t, sysuserperms u WHERE [u.user_name = '%SCHEMA%' AND] (domain_id = 25 OR domain_id = 26) AND t.creator = u.user_id
Dans cet exemple, lorsque la requête SQL renvoie la valeur 25 ou 26, elle est remplacée par JAVA dans la variable TYPE.