简体   繁体   中英

Oracle Stored Procedure problems

I have never created a stored procedure before. I have looked quite a bit and any template iv seen doesn't work for me.

I need a stored proc. that will run a series of scripts (27ish in all) right after another.

below is a snippet of the strings that will need to run, but I do not know how to do so via procedure, unless there is an alternative.

    DELETE
  FROM EXTRACT_WORK_000;
-----------------------------------------------------------------step00a1b ITEMMASTER
DELETE
  FROM SITES_TO_BE_PROCESSED;
-----------------------------------------------------------------STEP00a1b_DAYCOUNT_APPEND_TO_EXTRACT_WORK_000
INSERT INTO EXTRACT_WORK_000 (LOC_ID, 
                              FSCL_YR_NUM, 
                              FSCL_WK_IN_YR_NUM, 
                              MAXOFACTIVITYDAYS) 
SELECT LOC_ID, 
       FSCL_YR_NUM, 
       FSCL_WK_IN_YR_NUM, 
       MAX(ACTIVITYDAYS) AS MAXOFACTIVITYDAYS 
  FROM EXTRACT_ORDER_DETAIL 
 GROUP BY LOC_ID, FSCL_YR_NUM, FSCL_WK_IN_YR_NUM;
-----------------------------------------------------------------step00a1c
INSERT INTO SITES_TO_BE_PROCESSED (LOC_ID, 
                                   FSCL_YR_NUM, 
                                   FSCL_WK_IN_YR_NUM) 
SELECT LOC_ID, 
       FSCL_YR_NUM, 
       FSCL_WK_IN_YR_NUM 
  FROM EXTRACT_ORDER_DETAIL 
 GROUP BY LOC_ID, FSCL_YR_NUM, FSCL_WK_IN_YR_NUM;
-----------------------------------------------------------------step00a2_APPEND_TO_PERIOD
INSERT INTO PERIOD_XREF (FSCL_WK_IN_YR_NUM, 
                         CALDR_YR_NUM, 
                         FSCL_PD_NUM) 
SELECT PERIOD_XTND.FSCL_WK_IN_YR_NUM, 
       PERIOD_XTND.CALDR_YR_NUM, 
       PERIOD_XTND.FSCL_PD_NUM 
  FROM PERIOD_XTND, 
       PERIOD_XREF 
 WHERE PERIOD_XTND.FSCL_PD_NUM = PERIOD_XREF.FSCL_PD_NUM (+) 
   AND PERIOD_XTND.CALDR_YR_NUM = PERIOD_XREF.CALDR_YR_NUM (+) 
   AND PERIOD_XTND.FSCL_WK_IN_YR_NUM = PERIOD_XREF.FSCL_WK_IN_YR_NUM (+) 
   AND (PERIOD_XREF.FSCL_WK_IN_YR_NUM IS NULL 
         OR PERIOD_XREF.CALDR_YR_NUM IS NULL 
         OR PERIOD_XREF.FSCL_PD_NUM IS NULL) 
 GROUP BY PERIOD_XTND.FSCL_WK_IN_YR_NUM, PERIOD_XTND.CALDR_YR_NUM, PERIOD_XTND.FSCL_PD_NUM;
-----------------------------------------------------------------step00a2a_periods_to_process
DELETE
  FROM PERIOD_TO_PROCESS;
-----------------------------------------------------------------step00a2bperiods_to_process
INSERT INTO PERIOD_TO_PROCESS (FSCL_YR_NUM, 
                               FSCL_WK_IN_YR_NUM) 
SELECT EXTRACT_ORDER_DETAIL.FSCL_YR_NUM, 
       EXTRACT_ORDER_DETAIL.FSCL_WK_IN_YR_NUM 
  FROM EXTRACT_ORDER_DETAIL 
 GROUP BY EXTRACT_ORDER_DETAIL.FSCL_YR_NUM, EXTRACT_ORDER_DETAIL.FSCL_WK_IN_YR_NUM;
-----------------------------------------------------------------STEP00a3_CASEFLOW_PARM
INSERT INTO CONTROL_RECORDS (LOC_ID, 
                             CASEFLOW_USPD_MAX) 
SELECT /*+ FULL(CONTROL_RECORDS) */ LOCATION.LOC_ID, 
       5 AS Expr1 
  FROM LOCATION, 
       CONTROL_RECORDS 
 WHERE LOCATION.LOC_ID = CONTROL_RECORDS.LOC_ID (+) 
   AND CONTROL_RECORDS.LOC_ID IS NULL 
 GROUP BY LOCATION.LOC_ID, 5;

Hii

this is a simple example to create your stored procedure

CREATE OR REPLACE PROCEDURE PROC(
    P_LOC_ID            IN NUMBER,
    P_FSCL_YR_NUM       IN NUMBER,
    P_FSCL_WK_IN_YR_NUM IN NUMBER,
    P_MAXOFACTIVITYDAYS IN NUMBER )
AS
BEGIN
  -------------------------------STEP00a1b_DAYCOUNT_APPEND_TO_EXTRACT_WORK_000
  INSERT
  INTO EXTRACT_WORK_000 VALUES
    (
      P_LOC_ID,
      P_FSCL_YR_NUM,
      P_FSCL_WK_IN_YR_NUM,
      P_MAXOFACTIVITYDAYS
    ) ;
END PROC;

you can do this with all your statements

I hope i helped you

have a nice day

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