首页 > 解决方案 > 如何在 ORACLE APEX 中加入 PLSQL 中的 2 个表

问题描述

我正在尝试创建一个具有动态区域的表单以进行打印。我有一个简单的 PLSQL 可以工作:

declare

 cursor c_VYDEJKY is
   select ID, INFO, CUSTOMER_ID
     from VYDEJKY
    where ID = :P54_NEW;
 
    begin
      sys.htp.p('<ul>');
      for a in c_VYDEJKY loop
        sys.htp.p('<li>' || a.ID || ' (' || a.CUSTOMER_ID || ')</li>' );
       end loop;
      sys.htp.p('</ul>');
    end;

但是当我尝试使用 LEFT JOIN 或 WHERE 子句加入另一个表时,它不起作用:

declare

 cursor c_VYDEJKY is
   select v.ID, v.INFO, v.CUSTOMER_ID, c.CUSTOMERNAME
     from VYDEJKY v, CUSTOMERS c
    where v.ID = :P54_NEW
    AND v.CUSTOMER_ID > c.ID;

 
begin
  sys.htp.p('<ul>');
  for a in c_VYDEJKY loop
    sys.htp.p('<li> ID VÝDEJKY  :' ||  a.ID ||'</li>' );
    sys.htp.p('<li> POZNÁMKY  :' ||  a.INFO ||'</li>' );
    sys.htp.p('<li> POZNÁMKY  :' ||  c.CUSTOMERNAME ||'</li>' );
   end loop;
  sys.htp.p('</ul>');
end;

我在 c.CUSTOMERNAME 上收到以下错误

ORA-06550: line 15, column 39: PLS-00201: identifier 'C.CUSTOMERNAME' must be declared

有人可以指出我在哪里犯了错误。我真的只是从 PLSQL 开始。

谢谢你,JJ

标签: oracleplsql

解决方案


for循环中,列名的前缀是指游标行变量 ( for a in) 而不是表别名,因此您需要指定:

a.CUSTOMERNAME 

推荐阅读