То, что я пытаюсь сделать здесь, не запускает код вставки снова и снова, поэтому я решил создать хранимую процедуру. Ниже приведен скрипт для хранимой процедуры и он успешно создан, но когда я выполняю хранимую процедуру «BEGIN SP_INSERT_PMC_UPDATE_DP; END;» Я получаю сообщение об ошибке «* неправильное число или типы аргументов в вызове SP_INSERT_PMC_UPDATE_DP *»PL/SQL на Oracle 11g код при выполнении хранимой процедуры
Моя рамка мышления и код зр на это:
1- я проверить, если есть записи в PMC_UPDATE_DP и поместите это значение в RECORD_COUNT.
2- Теперь, если RECORD_COUNT больше нуля, я хочу удалить все записи из таблицы PMC_UPDATE_DP.
3- Если RECORD_COUNT равно нулю, то я хочу вставить данные из таблицы EXTERNAL_PMC_UPDATE_FD в PMC_UPDATE_DP.
CREATE OR REPLACE PROCEDURE PMC.SP_INSERT_PMC_UPDATE_DP
(RECORD_COUNT OUT NUMBER) --Is my issue here???
IS
BEGIN
--Returns the total records and adds the value to RECORD_COUNT variable.
SELECT COUNT(*)
INTO RECORD_COUNT
FROM PMC.PMC_UPDATE_DP;
--Condition to see if RECORD_COUNT is greater than zero and dumps data to clear out PMC.PMC_UPDATE_DP table.
IF RECORD_COUNT > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE PMC.PMC_UPDATE_DP';
END IF;
--Condition to see if RECORD_COUNT equals zero. If true insert data into PMC_UPDATE_DP table from the PMC.EXTERNAL_PMC_UPDATE_FD table.
IF RECORD_COUNT = 0 THEN
INSERT INTO PMC.PMC_UPDATE_DP
( JOB_ID,
CONTROL_ID,
ACCT_NO,
CALC_DIVIDEND,
CERT_NEW_SHARES,
CALC_CASH_DISBURSMENT,
DECEASED,
STATUS,
ALPHA_SP1,
ALPHA_SP2,
ALPHA_SP3,
ALPHA_SP4,
NUM_SP1,
NUM_SP2,
NUM_SP3,
NUM_SP4,
DONT_CALL,
DONT_MAIL
)
SELECT JOB_ID,
CONTROL_ID,
ACCT_NO,
CALC_DIVIDEND,
CERT_NEW_SHARES,
CALC_CASH_DISBURSMENT,
DECEASED,
STATUS,
ALPHA_SP1,
ALPHA_SP2,
ALPHA_SP3,
ALPHA_SP4,
NUM_SP1,
NUM_SP2,
NUM_SP3,
NUM_SP4,
DONT_CALL,
DONT_MAIL
FROM PMC.EXTERNAL_PMC_UPDATE_FD
COMMIT;
END IF;
END;