#oracle #plsql
#Oracle #plsql
Вопрос:
У меня есть приведенный ниже код в SQL Server:
UPDATE RH SET
--SELECT RH.economic_class ,
economic_class = C.economic_class
FROM dbo.tblRecHist RH
JOIN tblComp C ON RH.company_id = C.company_id
WHERE RH.company_id = @CompID
AND RH.rec_date = @RecDate
Который я преобразовал в Oracle в:
UPDATE tblRecHist
SET economic_class = (Select C.economic_class from tblComp C join tblRecHist
RH on RH.company_id = C.company_id)
WHERE RH.company_id = v_CompID
AND RH.rec_date = v_RecDate;
Поскольку это часть большой процедуры, я не могу выполнить это независимо.
Итак, мой вопрос в том, правильны ли обе логики? Если нет, то какие могут быть возможные изменения?
Ответ №1:
Эта логика не будет работать, потому что ваш подзапрос вернет более одной записи. Вместо того, чтобы присоединяться tblRecHist
к вашему подзапросу, опустите его и сопоставьте подзапрос с текущей строкой tblRecHist
из UPDATE
.
UPDATE tblRecHist rh
SET economic_class = (Select C.economic_class
from tblComp C
WHERE C.company_id = RH.company_id )
WHERE RH.company_id = v_CompID
AND RH.rec_date = v_RecDate;
Предполагается, что company_id
это уникальный ключ в tblComp
.