J'ai un petit soucis pour reprendre via sql le dir d'un répertoire avec la nouvelle commande :
QSYS2.IFS_OBJECT_STATISTICS
Je fait un CHGJOB CCSID(1147)
D repertoire s 100a
Exec SQL
DECLARE C1 CURSOR WITHOUT HOLD FOR
SELECT CAST(path_name AS CHAR(100))
FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/home/stephane','NO'))
where OBJECT_TYPE <> '*DIR';
exec sql open C1;
exec sql
fetch c1 into :repertoire;
Dow sqlcode = 0;
dsply %subst(repertoire:1:50);
exec sql
fetch c1 into :repertoire;
Enddo;
exec sql close c1;
Le sqlcode me donne une erreur. -501
Quelqu'un a déjà fait un programme utilisant cette fonction ?
Cause . . . . . : Un avertissement SQLSTATE de type 01xxx a été renvoyé par
la procédure ou la fonction IFS_OBJECT_STATISTICS définie par l'utilisateur
dans QSYS2 (avec le nom spécifique QSQIFSOBJS), ainsi qu'un texte de message
NOT AUTHORIZED TO RETRIEVE OBJECT ATTRIBUTES, OBJECT IS xxxxx
avec un utilisateur avec des droits, j'ai la liste des répertoires....
//Exec SQL
// DECLARE C1 CURSOR WITHOUT HOLD FOR
// SELECT CAST(path_name AS CHAR(100))
// FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/home/stephane','NO'))
// where OBJECT_TYPE <> '*DIR';
sql ='SELECT CAST(path_name AS CHAR(100)) +
FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS(''/home/stephane'',''NO'')) +
where OBJECT_TYPE <> ''*DIR''';
exec sql prepare s1 from :sql;
exec sql declare c1 cursor for s1;
//
exec sql open C1;
Si je rajoute un ça avec le code de mon premier post :