Utilisation d'un programme qui n'est pas la lib liste

IBM i, configuration, commandes, ...
Répondre
florian67
Messages : 135
Enregistré le : lun. 23 déc. 2013, 17:03:12

Utilisation d'un programme qui n'est pas la lib liste

Message par florian67 »

Bonjour à tous,

Nous avons un phénomène assez étrange.

On a un utilisateur qui a sa liste de bibliothèques.

Nous avons créé ces mêmes bibliothèques suffixant par 'TST'. Puis nous avons lancé un CRTDUPOBJ sur chacune de ces bibliothèques.

Jusque la RAS.

Puis on nous appel pour un plantage. En analysant, on se rend compte que l'utilisateur utilisait un programme des bibliothèques de test précédemment créées.
Comment est-ce que possible un profil puisse utiliser des objets qui ne sont pas dans la lib liste? (pas de bibliothèque en dur)

Avez-vous déjà eu ce problème ?

ps : ce sont des profils qui accèdent depuis l'extérieur et qui appellent des procédures stockées sur l'IBMi.

Merci d'avance.
Florian

vazymimil
Messages : 32
Enregistré le : ven. 28 sept. 2018, 17:14:46

(sans sujet)

Message par vazymimil »

Bonjour,

C'est possible quand la liste de bibliothèque n'est pas utilisée, est-ce que les procédure stockées sont appelées qualifiées ? Appellent-elles elles même d'autres procédures/fonctions et quelle est la valeur de SQLPATH à leur création, et quel nommage est utilisé lors de leur création ?

C'est le PATH qui détermine où les procédures et fonctions sont cherchées, mais sa valeur n'est pas forcément *LIBL.

Pour voir
SELECT
SPECIFIC_SCHEMA,SPECIFIC_NAME,SQL_PATH
FROM QSYS2.SYSFUNCS
where SPECIFIC_SCHEMA = 'xxx'
union
SELECT
SPECIFIC_SCHEMA,SPECIFIC_NAME,SQL_PATH
FROM QSYS2.SYSROUTINES
where SPECIFIC_SCHEMA = 'xxx'
Nicolas

florian67
Messages : 135
Enregistré le : lun. 23 déc. 2013, 17:03:12

(sans sujet)

Message par florian67 »

Bonjour,

J'ai lancé la requête et je n'ai jamais rien dans le SQL-PATH.

Mais ce n'est pas forcément la procédure en elle-même qui me pose problème, c'est le programme qu'elle lance.

Tout est qualifié au moment de la création. Au moment de l'appel on ne spécifie pas la bibliothèque de la procédure stockée mais elle n'existe que dans LABIB1. Par contre chez nous, il n'y a pas d'appel d'une procédure stockée à une autre.

Exemple de création :

Code : Tout sélectionner

CREATE PROCEDURE LABIB1.LAPROC1(  
  IN CODESOCIETE CHAR(1))                   
  DYNAMIC RESULT SETS 1                
  LANGUAGE RPGLE                       
  SPECIFIC LABIB1.LAPROC1          
  NOT DETERMINISTIC                    
  READS SQL DATA                       
  CALLED ON NULL INPUT                 
  EXTERNAL NAME 'LABIB1/LEPGM1'    
  PARAMETER STYLE SQL ;                
Dans ce cas on s'attend que la procédure lance le programme LEPGM1 de la bibliothèque LABIB1 (EXTERNAL NAME). Mais depuis le CRTDUPOBJ la procédure lance le programme LEPGM1 de la bibliothèque LABIB2.

Florian

Répondre