Проблема с переменными и про c oracle - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в oracle, и мне нужна помощь. Я хочу использовать переменные в моем про c, но я не знаю, как это сделать. Я хочу повлиять на строковое значение переменной в зависимости от другой переменной, но когда я обедаю, мой про c ничего не происходит. Код не проходит через оператор 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;

1 Ответ

0 голосов
/ 14 апреля 2020

Можете ли вы проверить свой оператор выбора, возможно, он возвращает более одной строки.

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 в вашу процедуру, чтобы увидеть ошибки.

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