Je construis un travail de séquence qui contient une activité UserVariables (de ParamLoading) et, dans cet ordre l'activité de l'emploi (ExtractJob). ParamLoading crée 4 variables utilisateur et appelle une routine pour remplir chacune d'elles avec la valeur correspondante, puis appelle ExtractJob en lui appliquant les paramètres précédemment chargés.DSSetParam -4 erreur lors du remplissage d'un paramètre avec une routine
ParamLoading invoque une routine de serveur (GetParams) qui exécute simplement un script shell (ShellQuery) et capture le résultat; ce script shell exécute une requête SQL sur une base de données Oracle et imprime le résultat à l'écran.
En ce qui concerne les tests, ShellQuery fonctionne comme prévu et GetParams renvoie la valeur attendue. Mais quand GetParams est appelé à partir du travail de séquence (peu importe si elle est en ParamLoading ou ExtractJob) le travail échoue avec l'erreur suivante:
Test2..JobControl (@JOB033_TBK_026_EXT_PTLF): Controller problem: Error calling DSSetParam(RUTA_ORIGEN), code=-4
[ParamValue/Limitvalue is not appropriate]
J'ai vérifié les types de données, les noms de paramètres, tous, sans succès ou même un message disant ce qui pourrait arriver.
Code de ShellQuery:
value=$(sqlplus -s $1/[email protected]$3/$4 <<!
set heading off
set feedback off
set pages 0
select param_value from cfg_params where filter='$5' and param_name='$6';
!)
echo $value
Code de GetParams:
Call DSExecute("UNIX", Ruta_Programas:"getparams.sh ":Username:" ":Password:" ":Server:" ":ServiceId:" ":Filtro:" ":Parametro, Output, SystemReturnCode)
Ans = Output
Return(Ans)
Je renvoie une chaîne avec la valeur appropriée de GetParams. Disons que je veux récupérer la valeur d'un paramètre appelé HOME_PATH; GetParams est supposé renvoyer '/ projects/EDLANA', et il retourne réellement une telle valeur. J'ai ajouté un 'exit 0' au script shell et la routine montre que la valeur de retour capturée dans SystemReturnCode est 0. –