oracle - 如何在 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
解决方案
在for
循环中,列名的前缀是指游标行变量 ( for a in
) 而不是表别名,因此您需要指定:
a.CUSTOMERNAME
推荐阅读
- ios - 在 Swift 中将视频转换为二进制数据
- dart - 如何更改大纲按钮的大小?
- angular - 使用 Angular 自定义具有不同布局和颜色的 Angular 主题
- php - 为什么 PHP 从带有动态值的复选框中获取空数组?
- date - 如何在 UltraEdit 中对日期字段应用过滤器
- sql-server - 通过函数抛出位置参数错误调用 sqlcmd
- api - 每个顶点只有一个 uv 坐标?
- python - 在 Python 3.x 中将 for 循环转换为 while 循环
- elasticsearch - 如何在elasticsearch中配置“search.max_open_scroll_context”?
- flutter - 块流未正确更新