变量和过程oracle的问题

变量和过程oracle的问题,oracle,plsql,package,procedure,Oracle,Plsql,Package,Procedure,我是甲骨文的初学者,我需要帮助。我想在我的程序中使用变量,但我不知道怎么做。我想根据另一个变量来影响变量的字符串值,但当我暂停我的进程时,什么都没有发生。代码没有通过IF语句,我不知道为什么 我想做的是: PROCEDURE contractual_control(p_id_depot IN depot.id_depot%TYPE) IS -- Code_out proc v_cod_out varchar(15) := null; -- List of CODE KO_FCT ko_fct

我是甲骨文的初学者,我需要帮助。我想在我的程序中使用变量,但我不知道怎么做。我想根据另一个变量来影响变量的字符串值,但当我暂停我的进程时,什么都没有发生。代码没有通过IF语句,我不知道为什么

我想做的是:

PROCEDURE contractual_control(p_id_depot IN depot.id_depot%TYPE) IS
-- Code_out proc
v_cod_out varchar(15) := null;  
-- List of CODE KO_FCT
ko_fct_01 varchar(15) := 'KO_FCT_01';
ko_fct_02 varchar(15) := 'KO_FCT_02';
ko_fct_03 varchar(15) := 'KO_FCT_03';
ko_fct_04 varchar(15) := 'KO_FCT_04';
-- List of CODE KO_TEC
ko_tec_01 varchar(15) := 'KO_TEC_01';
ko_tec_02 varchar(15) := 'KO_TEC_02';

 BEGIN  

-----------------------------------------------------------------------------------------------------
-- CC1 - Objets interdits avec Presse Export - JIRA 968
-----------------------------------------------------------------------------------------------------  
SELECT ko_fct_04 INTO v_cod_out FROM DEPOT_IMPORT
WHERE DEPOT_IMPORT.ID_ZONE IS NOT NULL
AND DEPOT_IMPORT.TYP_ELEMENT IN ('ENCART','INCARTO','INCPLUS','OPP');

IF v_cod_out is not null THEN
  insert into babas_test values ('code retours = ' || v_cod_out);
ELSE
  insert into babas_test values ('Pas de code retours');
END IF;

COMMIT;
END contractual_control;

可以检查select语句吗?它可能返回多行

SELECT ko_fct_04  FROM DEPOT_IMPORT
   WHERE DEPOT_IMPORT.ID_ZONE IS NOT NULL
   AND DEPOT_IMPORT.TYP_ELEMENT IN ('ENCART','INCARTO','INCPLUS','OPP');
您还可以向过程中添加
异常
,以查看错误

exception when others then 
DBMS_OUTPUT.put_line ('ERROR :' || SQLERRM );

“代码没有通过IF语句”那么实际发生了什么?你有运行时错误吗?插入到该表中的值
'Pas de code retours'
?请记住,我们无法运行您的代码,因此我们只知道您告诉我们的内容。我的包中没有错误,表babas_Test中没有插入。谢谢您的帮助,但我发现了问题,我无法插入babas表,因为进程不知道v_cod_out是否为null或空或其他内容。我修改proc以将行数返回到我的查询。然后根据我得到的行数插入babas表。