我在SQL Server中具有以下代码:
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;
我已经在Oracle中转换为:
public class FakeClient : SoapHttpClientProtocol
{
public static Mock<SoapHttpClientProtocol> Mock { get; set; }
public override object GetData() => Mock.Object.GetData();
public override object SendData(object data) => Mock.Object.SendData(data);
}
[TestMethod]
public void Function1Test()
{
FakeClient.Mock = new Mock<SoapHttpClientProtocol>();
FakeClient.Mock.Setup(mock => mock.GetData()).Returns(...));
FakeClient.Mock.Setup(mock => mock.SendData(It.IsAny<object>())).Callback(...));
WebServicesManager.Function1<FakeClient>();
}
由于这是一个大过程的一部分,因此我无法独立执行此过程。 所以,我的问题是逻辑都正确吗?如果没有,可能会发生什么变化?
答案 0 :(得分: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
中的唯一密钥。