今天改bug遇到了一个错误,如题.是别人改了我的sql,没经过严格的测试,后来发现改坏了.出错的语句如下 :
产生这个错误是由于子查询中的结果如果 返回结果有两个以上,就会导致oracle抛出这个错,因为查询条件不能支持多个查询参数.可以做如下修改:
要点是通过在where条件中加入需要查询的结果子集来将数据库中保存的value替换成页面上显示的display name
select g.id, g.account_id, g.account_relationship_id , (select le.DISPLAY_NAME from g, lov_element le where g.GRIEVANCE_TYPE = le.VALUE and le.LOV_NAME = 'GRIEVANCE_TYPE') grievance_type , g.requestor_name, g.continue_coverage_flag , g.comments, g.creation_date, g.approved_flag, p.first_name,p.id from account_relationship ar,g, person p ,account a
产生这个错误是由于子查询中的结果如果 返回结果有两个以上,就会导致oracle抛出这个错,因为查询条件不能支持多个查询参数.可以做如下修改:
select g.id, g.account_id, g.account_relationship_id , nvl(lov_list1.DISPLAY_NAME, ' ') as grievance_type , g.requestor_name, g.continue_coverage_flag , g.comments, g.creation_date, g.approved_flag, p.first_name, p.middle_initial, p.last_name, p.party_id from account_relationship ar,g, person p ,account a, (SELECT l.lov_name,l.display_name,l.value,enabled from lov_list l where (lov_name='GRIEVANCE_TYPE' and enabled='T')) lov_list1
要点是通过在where条件中加入需要查询的结果子集来将数据库中保存的value替换成页面上显示的display name