exec sql
DeCLARE c0 CURSOR FOR
SELECT XMLSERIALIZE(XMLDOCUMENT(XMLELEMENT(NAME "Department",
XMLATTRIBUTES(E.WORKDEPT AS "name"),
XMLAGG(XMLELEMENT ( NAME "emp", E.LASTNAME)
ORDER BY E.LASTNAME)))
AS CLOB(200)) AS "dept_list"
FROM EMPLOYEE E
WHERE E.WORKDEPT IN ('C01', 'E21')
GROUP BY WORKDEPT;
exec sql
open c0;
EXEC SQL
FETCH c0 into :XML_FILE;
exec sql
close c0;
*INLR=*ON;
Mon travail a pour CCSID(1147)
le fichier crée a comme ID codé de jeu de caractères : 1208
J'ai essaye en faisant un chgjob CCSID(65535) et j'obtient la même chose
il semblerait que le CCSID(1252) ne porte que sur XML_FILE_name pas sur le contenu du fichier
Complément d'information
dans XMLSERIALIZE on peut préciser le CCSID mais a part 1208 je n'ai pas réussit a mettre d'autre valeur.
Cela génère a la compilation le message d'erreur SQL0189 ;
Message . . . . : Le CCSID &1 est incorrect.
Cause . . . . . : Le CCSID &1 est incorrect pour l'une des raisons suivantes :
- Le CCSID n'est pas en EBCDIC.
- Le CCSID n'est pas accepté par le système.
- Le CCSID est incorrect pour le type de données.
- Si le CCSID est indiqué pour les données graphiques, il doit s'agir d'un
CCSID de type DBCS.
- Si le CCSID est indiqué pour les données UCS-2 ou UTF-16, il doit s'agir
d'un CCSID de type UCS-2 ou UTF-16.
- Si le CCSID est indiqué pour les données XML, il doit être de type SBCS
ou Unicode. Il ne doit pas être de type DBCS ou 65535.
- Si le CCSID est indiqué pour des données CLOB, DBCLOB ou DATALINK, il ne
doit pas être de type 65535.
- Si le CCSID est indiqué pour a une colonne de résultat de la fonction
XMLTABLE, il doit être différent de 65535.
- S'il existe plusieurs colonnes de type DataLink associées à FILE LINK
CONTROL, elles doivent toutes avoir le même CCSID.
- La clause NORMALIZED peut seulement être indiquée pour un CCSID de type
UTF-8 ou UTF-16.
Cdlt
Modifié en dernier par monthi le mar. 22 sept. 2020, 17:53:35, modifié 2 fois.