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