Обновление в одном Oracle Query - PullRequest
0 голосов
/ 01 июня 2018

Я пытался написать один единственный код в базе данных Oracle, но не смог объединить его с одним запросом, и при первоначальном запуске кода я получаю «ORA-00933: ошибка SQL-команды неправильно завершилась.Я также пытаюсь использовать оператор FOR LOOP, CASE, но он все равно не работает.Не могли бы вы дать мне знать, как объединить запрос в одном коде?

Требования Создайте CIDO столбца в DTW и вставьте данные из V в DTW, следующие критерии должны соответствовать CIDO = CID.использовать левое соединение с таблицей Q на CID из V и SID из Q Затем необходимо обновить CID, поданный в DTW, с CFCID в Q Где CCode из V = MX00

Я написал:

Alter table DTW add CIDO  -- added column 


Select  V.CID from  V,Q  where  V.CID=Q.SID 
Insert into DTW (CIDO)
Select V.CID from  V 
Left outer join Q  on V.CID = Q.SID 

Update DTW
Set CIDO = (select V.CID from V, Q
Where V.CID=Q.CFCID)

1 Ответ

0 голосов
/ 21 июня 2018

Ну, вы не говорите, как это работает, поэтому я предполагаю, sqlplus.У вас там 4 разные команды.В командной строке вам нужно будет запустить каждый из них и поставить a;в конце каждого.

-- Pretty sure your syntax is wrong here. What's the datatype of CIDO?
Alter table DTW add CIDO;

-- This will just display a list of CIDs, not sure if that's what you want.
Select  V.CID from  V,Q  where  V.CID=Q.SID;

-- This will insert one or more rows from V and Q
Insert into DTW (CIDO)
Select V.CID from  V 
Left outer join Q  on V.CID = Q.SID;

-- This will update all the rows in DTW to the same value, which is probably not what
-- you want. Also, if there's more than one row in this subquery, it will raise an error.
Update DTW
Set CIDO = (select V.CID from V, Q
Where V.CID=Q.CFCID);
...