Code source wiki de SQL iSeries - Récupération du user de verrouillage d'un enregistrement
Modifié par Julien EYMERY le 2015/08/31 11:09
Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | ((( | ||
| 2 | = Objectif = | ||
| 3 | ))) | ||
| 4 | |||
| 5 | Dans un programme Adelia Visual, récupérer l'utilisateur (user) verrouillant un enregistrement de table en accès SQL iSeries. | ||
| 6 | ((( | ||
| 7 | = Principe général = | ||
| 8 | ))) | ||
| 9 | ((( | ||
| 10 | == Étape 1 == | ||
| 11 | ))) | ||
| 12 | |||
| 13 | Récupérer le (% style="color: rgb(255,102,0);" %)Relative Record Number(%%) (RRN) de l’enregistrement verrouillé par la requête type suivante : | ||
| 14 | |||
| 15 | |||
| 16 | {{code language="none"}} | ||
| 17 | select rrn(NomTable) into :ValeurRrn from NomTable where Condition | ||
| 18 | {{/code}} | ||
| 19 | |||
| 20 | |||
| 21 | Où : | ||
| 22 | * (% style="color: rgb(255,102,0);" %)NomTable(%%) est la table sur laquelle a été détecté un verrouillage (*BLOQUE ~= ‘1’ ou SQLCODE ~= -913) | ||
| 23 | * (% style="color: rgb(255,102,0);" %)ValeurRrn(%%) est une variable définie en NUM_BIN_4 | ||
| 24 | * (% style="color: rgb(255,102,0);" %)Condition(%%) est la condition de la requête de mise à jour ou de lecture émise sur NomTable | ||
| 25 | |||
| 26 | ((( | ||
| 27 | == Étape 2 == | ||
| 28 | ))) | ||
| 29 | |||
| 30 | Appeler l'API IBM (% style="color: rgb(255,102,0);" %)QDBRRCDL(%%) (avec le format (% style="color: rgb(255,102,0);" %)RRCD0100(%%)) | ||
| 31 | |||
| 32 | Avec : | ||
| 33 | * en paramètres d'entrée | ||
| 34 | |||
| 35 | (% style="list-style-type: none;" %) | ||
| 36 | 1. 11. Le nom de table NomTable | ||
| 37 | 11. Le RRN récupéré à l'étape 1 | ||
| 38 | |||
| 39 | |||
| 40 | |||
| 41 | * en paramètres de sortie | ||
| 42 | |||
| 43 | (% style="list-style-type: none;" %) | ||
| 44 | 1. 11. Le profil utilisateur (user iSeries) | ||
| 45 | 11. Le nom du travail (job iSeries) | ||
| 46 | 11. Le n° du travail | ||
| 47 | |||
| 48 | |||
| 49 | ((( | ||
| 50 | == Exemple == | ||
| 51 | ))) | ||
| 52 | |||
| 53 | |||
| 54 | {{code title="Traitement général" language="none"}} | ||
| 55 | * Requête SQL, récupération du RRN de l'enregistrement verrouillé | ||
| 56 | EXEC_SQL(select rrn(MATABLE) into :wrrn from MATABLE where IdCode = :WIdCode) | ||
| 57 | |||
| 58 | TRAITER_PROC RTVUSER 'MATABLE' wrrn wprofil wnomtrav wnumtrav | ||
| 59 | |||
| 60 | {{/code}} | ||
| 61 | |||
| 62 | |||
| 63 | |||
| 64 | {{hardis-info icon="false" title="Procédure RTVUSER" type="info" icon="false"}} | ||
| 65 | |||
| 66 | {{/hardis-info}} | ||
| 67 | |||
| 68 | |||
| 69 | |||
| 70 | {{code title="Déclaration" language="none"}} | ||
| 71 | ***************************************************************************** | ||
| 72 | * Récupération informations sur le job verrouillant un enregistrement | ||
| 73 | * d'une table avec l'API QDBRRCDL | ||
| 74 | * Paramètres : | ||
| 75 | * - Nom table (E) | ||
| 76 | * - N° relatif d'enregistrement verrouillé (E) | ||
| 77 | * - Profil utilisateur (S) | ||
| 78 | * - Nom job (S) | ||
| 79 | * - N° job (S) | ||
| 80 | ***************************************************************************** | ||
| 81 | alpha(10) w_nom_pgm | ||
| 82 | alpha(500) w_rec_var | ||
| 83 | num_bin_4 w_lg_rec_var | ||
| 84 | alpha(8) w_fmt_name | ||
| 85 | alpha(20) w_rcd_id_inf | ||
| 86 | alpha(10) w_mbr_name | ||
| 87 | alpha(30) w_err_code | ||
| 88 | num_bin_4 w_nb_rec_lck_av | ||
| 89 | num_bin_4 w_nb_rec__lck_ret | ||
| 90 | num_bin_4 w_depl_lst_rec_lck | ||
| 91 | num_bin_4 w_size_info | ||
| 92 | alpha(44) t_info_job(11) | ||
| 93 | alpha(44) w_info_job | ||
| 94 | alpha(10) p_job_name | ||
| 95 | alpha(10) p_usr_name | ||
| 96 | alpha(6) p_job_nbr | ||
| 97 | alpha(1) w_lock_status | ||
| 98 | alpha(1) w_lock_state | ||
| 99 | num_bin_4 w_rrn_out | ||
| 100 | num_bin_4 p_rrn_in | ||
| 101 | alpha(44) p_info_job | ||
| 102 | alpha(10) p_nom_table | ||
| 103 | dsi dsrecvar w_nb_rec_lck_av w_nb_rec__lck_ret w_depl_lst_rec_lck w_size_info t_info_job | ||
| 104 | dsi dsinfojob w_info_job p_job_name,1 p_usr_name,11 p_job_nbr,21 w_lock_status,27 w_lock_state,28 w_rrn_out,29 | ||
| 105 | |||
| 106 | PARAM p_nom_table p_rrn_in p_usr_name p_job_name p_job_nbr | ||
| 107 | {{/code}} | ||
| 108 | |||
| 109 | |||
| 110 | |||
| 111 | {{code title="Traitement" language="none"}} | ||
| 112 | * Format API de récupération | ||
| 113 | w_fmt_name = 'RRCD0100' | ||
| 114 | * Appel de l'API | ||
| 115 | w_nom_pgm = 'QDBRRCDL' | ||
| 116 | w_lg_rec_var = 500 | ||
| 117 | w_rcd_id_inf = p_nom_table // '*LIBL ' | ||
| 118 | w_mbr_name = '*FIRST' | ||
| 119 | |||
| 120 | APPELER &w_nom_pgm w_rec_var w_lg_rec_var w_fmt_name w_rcd_id_inf w_mbr_name p_rrn_in w_err_code | ||
| 121 | |||
| 122 | dsrecvar = w_rec_var | ||
| 123 | w_info_job = t_info_job(1) | ||
| 124 | {{/code}} | ||
| 125 |