Существует n альтернатив без использования plsql
.
Вы можете запросить обе таблицы одновременно:
SELECT 'item_supp_country_DIM' source_table, Origin_country_id
FROM item_supp_country_DIM
WHERE item = :I_ITEM
UNION ALL
SELECT 'item_supp_country' source_table, Origin_country_id
FROM item_supp_country
WHERE item = :I_ITEM;
Я не знаю вашу схему или размеры таблиц. Но если у item
есть индекс, этот запрос должен быть быстрым.
Testdata:
DROP TABLE ITEM_SUPP_COUNTRY_DIM;
DROP TABLE ITEM_SUPP_COUNTRY;
CREATE TABLE ITEM_SUPP_COUNTRY_DIM
(
ORIGIN_COUNTRY_ID NUMBER NOT NULL,
ITEM NUMBER
);
CREATE TABLE ITEM_SUPP_COUNTRY
(
ORIGIN_COUNTRY_ID NUMBER NOT NULL,
ITEM NUMBER
);
INSERT INTO ITEM_SUPP_COUNTRY_DIM values(1, 1);
INSERT INTO ITEM_SUPP_COUNTRY_DIM values(2, 2);
INSERT INTO ITEM_SUPP_COUNTRY values(2, 2);
INSERT INTO ITEM_SUPP_COUNTRY values(3, 3);
Имейте в виду, что если I_ITEM := 2
, вы получите две строки результатов.