使用pl/sql在for循环中将两个不同的表行数据选择到一行中

使用pl/sql在for循环中将两个不同的表行数据选择到一行中,sql,plsql,oracle-apex,Sql,Plsql,Oracle Apex,我在OracleApex中有一个区域,数据是从pl/sql获取的 以下是pl/sql源代码: begin for drow in ( select * from books where book_id = :P13_BooK_ID ) loop htp.prn('<table border=0> <tbody> <tr> <td

我在OracleApex中有一个区域,数据是从pl/sql获取的

以下是pl/sql源代码:

begin    
    for drow in ( select * from books where book_id = :P13_BooK_ID ) loop
        htp.prn('<table border=0>
              <tbody>
                <tr>
                  <td valign=top>
                      <table border=0>
              <tbody>
                                     <tr>
                  <td >Reporting Period</td>    
                  <td >' || to_char(drow.REPORTING_PERIOD, 'MM-DD-YYYY') || '</td>
                </tr>   
                 <tr>
                  <td >L Key</td>    
                  <td >' || drow.L_KEY || '</td>
                </tr>
                <tr>
                  <td >Name</td>
                  <td >' || drow.BooK_NAME || '</td>
                </tr>                   
                <tr>
                  <td >C Type</td>
                  <td >' || drow.C_TYPE || '</td>
                </tr>                   
                <tr>
                  <td >E Count</td>
                  <td >' || drow.E_COUNT || '</td>
                </tr>
              </tbody>
            </table>');    
    end loop;
end;
/
这说明我有错误

ORA-06550:第4行第2列:PLS-00402:选择列表中需要别名 避免重复列名的光标位置ORA-06550:第4行第2列: PL/SQL:忽略语句


有人能告诉我如何在该地区添加这两个细节吗。谢谢

正如错误所说,您需要指定要在光标中包含哪些列,并为其指定不同的别名。例如,如果两个表中都有列ID,为了避免不确定行为,需要如下指定游标:

for drow in ( select b.id books_id, s.id school_id from books b, school s where b.book_id = :P13_BooK_ID and books.l_key =school.k_key) loop
并相应地访问它们,即drow.books\u id或drow.school\u id

for drow in ( select b.id books_id, s.id school_id from books b, school s where b.book_id = :P13_BooK_ID and books.l_key =school.k_key) loop