【问题标题】:PL/SQL: Function Created with compilation Error [closed]PL/SQL:使用编译错误创建的函数 [关闭]
【发布时间】:2014-09-25 18:24:09
【问题描述】:

我正在尝试找出为什么会出现编译错误

CREATE OR REPLACE FUNCTION Get_balance_due
(order_id_f NUMBER)
RETURN NUMBER
AS 
balance_due_f NUMBER;
BEGIN
SELECT SUM(total_amount) INTO balance_due_f 
FROM order_lines, orders
WHERE order_id_f = order_line.order_id;
RETURN balance_due_f;
End;

错误是

LINE/COL  ERROR  
7/1  PL/SQL: SQL Statement ignored  
9/20  PL/SQL: ORA-00918: column ambiguously defined 

我尝试做一个常规的选择查询,它成功了

SELECT SUM(total_amount)
FROM order_lines, orders
WHERE order_lines.order_id = orders.order_id and orders.order_id = 12

该函数应该对所需的 order_id 进行金额求和并将其返回...

错误信息是:函数创建时出现编译错误

【问题讨论】:

  • @NicholasKrasnov 谢谢,还是一样的错误信息
  • 您在balance_due_f NUMBER 末尾缺少一个分号。
  • @BobJarvis 谢谢,出现新错误
  • 您正在使用表order_linesorders,但在WHERE 子句中您尝试与order_line.order_id 进行比较。那么表名为order_lines 还是order_line
  • 是的,明白了 :) 谢谢它现在的工作

标签: sql function plsql


【解决方案1】:

每当您收到此错误时,请尝试完全限定您使用的列。

试试TABLENAME.order_id_f = order_line.order_id,而不是order_id_f = order_line.order_id

见:http://www.dba-oracle.com/t_ora_00918_column_ambiguously_defined.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    相关资源
    最近更新 更多