CREATE OR REPLACE PROCEDURE myDemoStoreProc
(
inputVariable1 IN NUMBER DEFAULT 0 ,
v_cursor OUT SYS_REFCURSOR
)
AS
BEGIN
INSERT INTO temptable1(
SELECT DISTINCT FROM TABLE1
WHERE Col1 = 'logic1' );
INSERT INTO temptable2(
SELECT col2 ,
NVL(( SELECT col1
FROM temptable1 tt1
WHERE sm.col1 = tt1.col1), 0) col3,
col4
FROM table2 sm);
DELETE temptable2
WHERE col4 IN ( 'logic2','logic3' )
OR col4 IS NULL;
IF NVL(inputVariable1 , 0) = 1 THEN
DELETE temptable2
WHERE col1!= 'logic4';
END IF;
OPEN v_cursor FOR
SELECT col1,
col2,
col3,
col4
FROM temptable2;
DBMS_SQL.RETURN_RESULT(v_cursor) ;
END;
Как вы можете видеть, что в этой хранимой процедуре используются две временные таблицы, как я могу удалить зависимость временных таблиц, можно переписать всю хранимую процедуру без временных таблиц
Мне не нужен полный код, возможно, псевдокод для настройки логики последнего удаления и If.
Я пытался сделать большой запрос, но это не очень удобно.