简体   繁体   中英

Calling a sql procedure inside another procedure

I want to call a procedure inside another procedure when some conditions met. I am facing a problem when calling the procedure inside another procedure.

Please help me to get this issue resolved.

--- First Procedure ----

create or replace 
PROCEDURE first_procedure(

PERIDTYPE   IN VARCHAR2,
CITIZENID IN NUMBER,
NIFNUMBER OUT NUMBER,
PERIDNUMBER1 OUT NUMBER,
NUBINUMBER OUT NUMBER ,
REGFORMID OUT NUMBER ,
BOSTATUSCODE OUT VARCHAR2 ,
PERID OUT NUMBER )
AS
BEGIN
SELECT cm_nu_bi
INTO NUBINUMBER
FROM cm_minjus_agt_vw
WHERE cm_id_citizen_stage_sigt = CITIZENID;
select per_id
into PERID
from ci_per_id
 WHERE id_type_cd = PERIDTYPE
 AND per_id_nbr  = NUBINUMBER;
 SELECT reg_form_id,
per_id_nbr,
bo_status_cd
INTO REGFORMID,
NIFNUMBER,
BOSTATUSCODE
FROM table_x
 WHERE per_id= PERID;

 if NIFNUMBER is not null then
INSERT
INTO table_y
  (
  id_cidadao_stage_sigt,
  NU_NIF
   )
  VALUES
    (
    PERIDNUMBER,
    NIFNUMBER
         );
   else
     EXCE := CM_ERROR_TABLE_ENTRY @CITIZENID=CITIZENID, @REGID=REGFORMID;
    end if;
   END CM_GET_NIF_NBR;

--- Second Procedure ---

                         create or replace 
               PROCEDURE second_procedure
               (
               CITIZENID IN NUMBER
                , REGID IN NUMBER  
               , EXCEPTIONCATEGORYCD IN OUT VARCHAR2  
               , MESSAGECATEGORYNUMBER IN OUT NUMBER  
               , MESSAGENUMBER IN OUT NUMBER 
               , MESSAGETEXT IN OUT VARCHAR2
               ) AS 
               BEGIN
               select  
               message_cat_nbr, 
               message_nbr, 
               excp_cat_cd
               into 
               MESSAGECATEGORYNUMBER,
               MESSAGENUMBER,
               EXCEPTIONCATEGORYCD
               from ci_reg_form_excp where 
               reg_form_id= REGID;
               SELECT 
               message_text
               into 
               MESSAGETEXT
               FROM ci_msg_l
               WHERE message_cat_nbr=MESSAGECATEGORYNUMBER
               AND message_nbr=MESSAGENUMBER
               AND language_cd='PTG';
               insert INTO tb_sigt_processing_log@MINJUS_AGT_DBLINK
               (ID_CIDADAO_STAGE_SIGT,exception_cat_code, message_category, message_number, message_text)
               values
               (CITIZENID,EXCEPTIONCATEGORYCD,MESSAGECATEGORYNUMBER,MESSAGENUMBER,MESSAGETEXT);




                 NULL;
               END CM_ERROR_TABLE_ENTRY ;

The issue i am getting is. Please tell me if more input is needed.

在此处输入图片说明

I think you want to call the procedure with arguments in this line

EXCE := CM_ERROR_TABLE_ENTRY @CITIZENID=CITIZENID, @REGID=REGFORMID;

It is not valid in Oracle. You could just call your procedure using

CM_ERROR_TABLE_ENTRY( CITIZENID,REGFORMID );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM