2012-07-12 71 views
1

我有兩個表這樣壞的結果預計

FLUX_ISU_EQU

ID NUMBER(38,0) 
EQU_CODE VARCHAR2(10 BYTE) 
DATE_DERNIERE_MODIF DATE 

FLUX_ISU_EQU_AFF_TAB

ID NUMBER(38,0) 
EQU_ID NUMBER(38,0) 
DATE_DEBUT DATE 
DATE_FIN DATE 
TYPE_EQU VARCHAR2(10 BYTE) 
CODE_REGION VARCHAR2(10 BYTE) 

我在我的表中的數據是這樣的:

FLUX_ISU_EQU

enter image description here

FLUX_ISU_EQU_AFF_TAB

enter image description here

我有一個程序是這樣的:

PROCEDURE DONNEES_IS_PRESENT(equ_id IN NUMBER, isCheckDonnees IN OUT BOOLEAN) IS 
nbEquipement NUMBER; 
BEGIN 
nbEquipement := 0; 
select count(*) into nbEquipement from flux_isu_equ_aff_tab fieat, flux_isu_equ fie where fieat.EQU_ID = fie.id AND fie.id = equ_id; 
    IF nbEquipement = 0 THEN 
    isCheckDonnees := false; 
    Pk_Compas_Util.LOG_ERROR('Pk_Compas_Flux_Isu.IMPORT_EQUIPEMENT_EAI', 'IMPORT_EQUIPEMENT_EAI', equ_id, NULL, NULL, 'Acune correspondance pour l''id '''||equ_id||''' dans la table FLUX_ISU_EQU_AFF_TAB', NULL); 
    END IF; 
END; 

那麼,爲什麼當我執行我的程序nbEquipement = 3,而不是nbEquipement = 1

爲什麼..?

PS:當我做

select count(*) from flux_isu_equ_aff_tab fieat, flux_isu_equ fie where fieat.EQU_ID = fie.id AND fie.id = 2; 

我有一個結果

THX。

+0

您在表格中添加行時提交了嗎? – 2012-07-12 09:16:51

+0

是的我犯我當我添加我的數據 – Mercer 2012-07-12 09:19:35

+0

據我可以看到結果應該是3 – 2012-07-12 09:23:40

回答

1

在下面的查詢

select count(*) into nbEquipement from flux_isu_equ_aff_tab fieat, flux_isu_equ fie where fieat.EQU_ID = fie.id AND fie.id = equ_id; 

equ_id是指表中的字段。由於FLUX_ISU_EQU_AFF_TAB有一個列equ_id。因此,你有一個看起來像這樣的聯接。 fieat.EQU_ID = fie.id

你應該做的是非常簡單。只需將該變量重命名爲IN_EQU_ID或PARAM_EQU_ID orso即可。和您的查詢應該是這樣的:

select count(*) into nbEquipement from flux_isu_equ_aff_tab fieat, flux_isu_equ fie where fieat.EQU_ID = fie.id AND fie.id = in_equ_id; 

存儲過程應該是這樣的:

create or replace 
PROCEDURE DONNEES_IS_PRESENT(in_equ_id IN NUMBER, isCheckDonnees IN OUT BOOLEAN) AS 
nbEquipement NUMBER; 
BEGIN 
nbEquipement := 0; 
select count(*) into nbEquipement from flux_isu_equ_aff_tab fieat, flux_isu_equ fie where fieat.EQU_ID = fie.id AND fie.id = in_equ_id; 
    IF nbEquipement = 0 THEN 
    isCheckDonnees := false; 
    --Pk_Compas_Util.LOG_ERROR('Pk_Compas_Flux_Isu.IMPORT_EQUIPEMENT_EAI', 'IMPORT_EQUIPEMENT_EAI', equ_id, NULL, NULL, 'Acune correspondance pour l''id '''||equ_id||''' dans la table FLUX_ISU_EQU_AFF_TAB', NULL); 
    END IF; 
END; 

我認爲這是最好的,如果你有或IN_前綴的所有參數類似的東西 這樣你沒有與您的字段名稱相同的參數名稱

+0

它的工作,thx;) – Mercer 2012-07-12 10:24:49