Bonjour à tous,
Je cherche à traduire une procédure stockée actuellement en T-SQL vers du PL/SQL mais je n'arrive pas à trouver la correspondance en PL/SQL..
Voici ma procédure sous Sybase
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 create procedure proc_iev_doublons_alim_0903 as INSERT INTO DOUBLONS_IEV_0903 SELECT DISTINCT IDENT_NOM, IDENTIFICATION.IDENT_IDENT, AGENT_IEV_NUMSS, REFGRADE_CODE, REFELT_CODE, IEV_MONTANT, AGENT_IEV_0903.REFCSO_CODE, AGENT_IEV_ENTITE, REFBUR_LIBELLE, count(1) NB_OCCURRENCES, AGENT_IEV_CIGAP from IDENTIFICATION, AGENT_IEV_0903, IEV_0903, REFBUR where IDENTIFICATION.IDENT_IDENT = AGENT_IEV_0903.IDENT_IDENT and AGENT_IEV_CLE = IEV_CLE and REFBUR.REFCSO_CODE=AGENT_IEV_0903.REFCSO_CODE and REFBUR.REFBUR_CODE=AGENT_IEV_ENTITE and IEV_TYPE='1' and IEV_DOUBLON > 1 group by IDENTIFICATION.IDENT_IDENT, IDENT_NOM, AGENT_IEV_CIGAP, AGENT_IEV_NUMSS, REFGRADE_CODE, REFELT_CODE, IEV_MONTANT,AGENT_IEV_0903.REFCSO_CODE, AGENT_IEV_ENTITE, REFBUR_LIBELLE having count(1)>1 order by IDENT_NOM
Et voici celle que j'ai fais en pl/sql
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 CREATE OR REPLACE procedure proc_iev_doublons_alim ( moisDePaie IN number) AS BEGIN INSERT INTO DOUBLONS_IEV (DBIEV_IDENT, DBIEV_AAAAMM, DBIEV_IDENT_NOM, DBIEV_AGENT_IEV_NUMSS, DBIEV_REFGRADE_CODE, DBIEV_REFELT_CODE, DBIEV_IEV_MONTANT, DBIEV_REFCSO_CODE, DBIEV_AGENT_IEV_ENTITE, DBIEV_REFBUR_LIBELLE, DBIEV_NB_OCCURENCES, DBIEV_AGENT_IEV_CIGAP ) SELECT DISTINCT IDENTIFICATION.IDENT_IDENT, IEV_AAAAMM, IDENTIFICATION.IDENT_NOM, AGENT_IEV.AGENT_IEV_NUMSS, AGENT_IEV.REFGRADE_CODE, IEV.REFELT_CODE, IEV.IEV_MONTANT, AGENT_IEV.REFCSO_CODE, AGENT_IEV.AGENT_IEV_ENTITE, REFBUR.REFBUR_LIBELLE, count(1) AS NB_OCCURRENCES, AGENT_IEV.AGENT_IEV_CIGAP FROM IDENTIFICATION, AGENT_IEV, IEV, REFBUR WHERE IDENTIFICATION.IDENT_IDENT = AGENT_IEV.AGENT_IEV_IDENT AND AGENT_IEV.AGENT_IEV_AAAAMM = moisDePaie AND AGENT_IEV_IDENT = IEV_IDENT AND AGENT_IEVAAAAMM = IEV_AAAAMM AND AGENT_IEV_ORDRE = IEV_ORDRE AND REFBUR.REFCSO_CODE = AGENT_IEV.REFCSO_CODE AND REFBUR.REFBUR_CODE = AGENT_IEV_ENTITE AND IEV_TYPE = '1' AND IEV_DOUBLON > 1 GROUP BY IDENTIFICATION.IDENT_IDENT, IEV_AAAAMM, IDENTIFICATION.IDENT_NOM, AGENT_IEV.AGENT_IEV_NUMSS, AGENT_IEV.REFGRADE_CODE, IEV.REFELT_CODE, IEV.IEV_MONTANT, AGENT_IEV.REFCSO_CODE, AGENT_IEV.AGENT_IEV_ENTITE, REFBUR.REFBUR_LIBELLE, AGENT_IEV.AGENT_IEV_CIGAP HAVING count(1)>1 ORDER BY IDENT_NOM; END proc_iev_doublons_alim;
Est-ce que ça vous parait logique ou pas du tout ?
J'ai vu qu'on pouvait mettre des values pour renseigner les champs mais je doute que ça fasse les mêmes insert qu'avec le select.
Enfin comme je ne suis pas sûr du tout, et que je suis un grand débutant, je préférais avoir vos avis..
Merci,
NarbOni
Partager