首页 > 解决方案 > 变量和proc oracle的问题

问题描述

我是甲骨文的初学者,我需要帮助。我想在我的过程中使用变量,但我不知道该怎么做。我想将一个字符串值影响到一个取决于另一个变量的变量,但是当我吃午饭时,我的 proc 什么都没有发生。代码没有通过 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;

标签: oracleplsqlpackageprocedure

解决方案


你能检查你的选择语句,它可能返回不止一行。

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 );

推荐阅读