sql - 如何修复 PL/SQL:ORA-00918:Oracle 中定义不明确的列
问题描述
我在 Oracle 中创建一个包,当我编译包的主体时,我得到 PL/SQL: ORA-00918: column ambiguously defined 错误。
我已经浏览了代码,并仔细检查了别名,所以对于我收到此错误的原因感到有些困惑。
有问题的错误在第 10 行。WHERE 子句中的 PERSON_CODE、FUND_YEAR 和 UIO_ID 是我在包中创建的函数的参数。
SELECT CASE
WHEN LH.PROP_NOT_TAUGHT > 50 AND LA.DELIVERY_PROVIDER IS NOT NULL THEN TO_NUMBER(OU.UKPRN)
ELSE LA.UK_PROV_NO
END AS UKPRN_T
FROM FES.LEARNER_AIMS LA
JOIN FES.LEARNER_HE LH
ON LH.PERSON_CODE = LA.PERSON_CODE
AND LH.FUNDING_YEAR = LA.FUNDING_YEAR
LEFT JOIN FES.ORGANISATION_UNITS OU
ON OU.ORGANISATION_CODE = LA.DELIVERY_PROVIDER
WHERE LA.PERSON_CODE = PERSON_CODE
AND LA.FUNDING_YEAR = FUND_YEAR
AND LA.UIO_ID = UIO_ID;
解决方案
您的函数参数名称和字段名称发生冲突,从而产生阴影效果。您可以在参数名称前加上函数名称以消除歧义
AND LA.UIO_ID = MyfunctionName.UIO_ID;
或者,重命名参数以避免此类情况发生。
推荐阅读
- python-3.x - 如何从python 3中的列表中删除具有共同点的项目
- reactjs - React 组件的 defaultValue 不起作用
- c++ - 使用cuda c ++查找数组中元素的索引
- c# - itext7.pdfHTML 库如何修复它以支持多种语言
- qt - qt 中的 connect(openAction, &QAction::triggered, ...) 和 connect(openAction, SIGNAL(triggered()) ...) 有什么区别
- python - 同时进行特征选择和超参数调整
- java - MaterialCardView中ImageView下的SelectableItemBackground
- java - Jhipster 在生产模式下无法像在开发模式下那样从本地主机调用 api
- javascript - 当一个 javascript 短语在 svg 中移动时,具有可拖动路径的 svg 停止工作
- python - 获取所有行而不是连续行之间的差异