Буду признателен за всю помощь, которую я могу получить. Я учусь PL/SQL и наткнулся на проблему так, пожалуйста, помогите мне найти подходящий способ обработки этой ситуации :) Я бегу Oracle 11gR2PL/SQL insert на основе условий
Моя схема:
CREATE TABLE "ENTRY"
(
"TYPE" VARCHAR2(5 CHAR) ,
"TRANSACTION" VARCHAR2(5 CHAR),
"OWNER" VARCHAR2(5 CHAR)
);
CREATE TABLE "VIEW"
(
"TYPE" VARCHAR2(5 CHAR) ,
"TRANSACTION" VARCHAR2(5 CHAR),
"OWNER" VARCHAR2(5 CHAR)
);
CREATE TABLE "REJECTED"
(
"TYPE" VARCHAR2(5 CHAR) ,
"TRANSACTION" VARCHAR2(5 CHAR),
"OWNER" VARCHAR2(5 CHAR)
);
Мой образец данные:
insert into entry (type, transaction, owner) values (11111, 11111, 11111);
insert into entry (type, transaction, owner) values (22222, 22222, 22222);
Теперь для загадочных частей, я написал эту процедуру, которая должна копировать значения из таблицы элемента, чтобы просмотреть таблицу, если запись не существует для конкретной сделки (и владелец) комбинации. Если такая комбинация существует в таблице VIEW, запись должна затем перейти в таблицу REJECTED. Эта процедура делает это, но при нескольких прогонах процедуры я получаю все больше записей в таблице REJECTED, поэтому мой вопрос заключается в том, как ограничить вставки в таблице REJECTED - если запись уже существует в таблице REJECTED, ничего не делайте.
create or replace PROCEDURE COPY AS
v_owner_entry ENTRY.owner%TYPE;
v_transaction_entry ENTRY.transaction%TYPE;
v_owner VIEW.owner%TYPE;
v_transaction VIEW.transaction%TYPE;
begin
begin
select e.owner, e.transaction, v.owner, v.transaction
into v_owner_entry, v_transaction_entry, v_owner, v_transaction
from entry e, view v
where e.owner = v.owner
and e.transaction = v.transaction;
EXCEPTION
when too_many_rows
then
insert into REJECTED
(
TYPE,
TRANSACTION,
OWNER
)
SELECT
s1.TYPE,
s1.TRANSACTION,
s1.OWNER
FROM ENTRY s1;
when no_data_found
THEN
insert into VIEW
(
TYPE,
TRANSACTION,
OWNER
)
SELECT
s.TYPE,
s.TRANSACTION,
s.OWNER
FROM ENTRY s;
end;
end;
Любые предложения ребята? :)
Cheers!
UPDATE Извините, если исходное сообщение не было достаточно ясно - Процедура должна реплицировать данные (на ежедневной основе) из DB1 в DB2 и вставить в VIEW или отвергаются в зависимости от условий. Вот фото, может быть, это будет понятнее:
Привет, Stew! Во-первых, я видел свою ошибку с именами таблиц в моем коде, это называется VIEWER, а не VIEW и т. Д. ... Я проверю его, как только я вернусь домой! – user3782821
Отлично. Если это сработает, я буду благодарен за голосование, поскольку я мог бы использовать очки. – StewS2