Сценарий:Выбор и обновление личных данных необходима помощь
У меня есть две таблицы: Вендоры таблица содержит уникальные идентификаторы; и таблица Order имеет строки, содержащие столбец с уникальными идентификаторами, которые мы хотим разбить. Например: уникальный идентификатор: 12345, а контент имеет «Заказ на 12345» ... желаемый результат, буквально: «Заказ для XXXXX»
Мне нужен оператор выбора, чтобы показать, какие записи из таблицы 2 действительно имеют уникальную идентификатор и оператор обновления для удаления.
Схема
Table Vendors
ID varchar2(9)
NAME varchar(50)
Table Orders
OrderNumber varchar2(10)
Dscr varchar(250) <----order description
Пример:
Vendors
12345 Joe
23456 Jenni
Orders
A123456 | Order for 12345 <---notice this number is the ID of the Vendor
B039483 | Order for 23456
Желаемый результат:
Orders
A123456 | Order for XXXXX
B039483 | Order for XXXXX
То, что я до сих пор:
DECLARE
TYPE dscr_type IS TABLE OF VARCHAR2(250);
chk_dscr_coll dscr_type;
BEGIN
-- gather a list of IDs to use
FOR someone IN (
SELECT unique(ID) FROM vendors WHERE TIN IS NOT NULL
)
-- loop through the Orders table
-- try to match the ID agains each record via regular expression
LOOP
SELECT dscr BULK COLLECT INTO dscr_coll
FROM orders
WHERE REGEXP_LIKE(dscr, '.*'||someone.ID||'.*');
DBMS_OUTPUT.PUT_LINE('>>>>>>>>>>>>>>'||dscr_coll(1));
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('');
END;
/
UPDATE
Я следую за лидерство, представленную Kordirko и пришел с этим MERGE заявление.
MERGE INTO AFMOWN.ABS_DOC_ACTG target
USING (
SELECT v.TIN
FROM AFMOWN.R_VEND_CUST v
where v.TIN is not null
) vendor
ON (chk_dscr LIKE '%' || vendor.TIN || '%')
WHEN MATCHED THEN UPDATE
SET chk_dscr = REGEXP_REPLACE(chk_dscr, vendor.TIN, '999999999');
К сожалению, я получил эту ошибку: LHS из UPDATE SET содержит столбцы, на которые ссылается О п
Может кто-то помочь?
Я не имею понятия, что вы хотите. Покажите нам схему db, образцы данных и ожидаемый результат. Вы делаете много вещей в этой процедуре магазина, не имеет смысла. Пожалуйста, прочитайте [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t И вот отличное место для [** START **] (http : //spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. –