Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle10g 预期会有坏结果_Oracle10g_Procedure - Fatal编程技术网

Oracle10g 预期会有坏结果

Oracle10g 预期会有坏结果,oracle10g,procedure,Oracle10g,Procedure,我有两张这样的桌子 通量 流量表 我的表格中有如下数据: 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 fiea

我有两张这样的桌子

通量

流量表

我的表格中有如下数据:

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;
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;
通量

流量表

我有这样一个程序:

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;
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;
那么,为什么在执行过程nbEquipement=3而不是nbEquipement=1时

为什么

附言:当我这样做的时候

select count(*)  from flux_isu_equ_aff_tab fieat, flux_isu_equ fie where fieat.EQU_ID = fie.id AND fie.id = 2;
我有一个结果


Thx.

在下面的查询中

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;
equal_id指的是表的字段。由于FLUX\u ISU\u equal\u AFF\u选项卡有一个列equal\u id,因此您有一个如下所示的连接<代码>fieat.eq_ID=fie.ID

你应该做的很简单。只需将变量重命名为IN_eq_ID或PARAM_eq_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;
存储过程应如下所示:

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;
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_u或类似的前缀
这样,您的参数名称就不会与下面查询中的字段名称相同了

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;
equal_id指的是表的字段。由于FLUX\u ISU\u equal\u AFF\u选项卡有一个列equal\u id,因此您有一个如下所示的连接<代码>fieat.eq_ID=fie.ID

你应该做的很简单。只需将变量重命名为IN_eq_ID或PARAM_eq_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;
存储过程应如下所示:

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;
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_u或类似的前缀
因此,您的参数名称与字段名称不同

您在表中添加行时提交了吗?是的,我在添加数据时提交了。据我所知,结果应为3如果您在标识符上进行选择,则应仅返回一个结果,而不是三个。执行此操作时,您得到了多少行:选择*自流量、流量、流量、流量等,其中fieat.eq\u ID=fie.ID,fie.ID=2;您在表中添加行时提交了吗?是的,我在添加数据时提交了。据我所知,如果对标识符进行选择,则结果应为3。只返回一个结果,而不是三个。执行此操作时,您得到了多少行:Select*from FLUCH\u isu\u equ\u aff\u tab fieat,通量等于,其中fieat.eq\u ID=fie.ID和fie.ID=2;