Oracle PL-SQL中模糊定义的列

时间:2012-01-20 15:47:13

标签: sql oracle sqlplus

我正在尝试在不同的表上选择多行,但无论我做什么都无法让它工作。 我收到这个错误:

Error(14,1): PL/SQL: ORA-00918: column ambiguously defined

代码(注意,这是触发器的一部分,这就是为什么有:new):

SELECT brw.borage, bt.agelower, bt.ageupper
INTO borAge, minAge, maxAge
FROM Borrower brw, BookTitle bt
  INNER JOIN BookCopy bc ON  :new.bcID = bc.bcID
  INNER JOIN BookTitle bt ON bt.isbn = bc.isbn

注意:BookTitle只有一个ageLower和ageUpper列。除了borAge,minAge和maxAge之外,没有任何问题。

2 个答案:

答案 0 :(得分:6)

Tre问题是你有两次相同的别名,试试这个:

SELECT brw.borage, bt.agelower, bt.ageupper
INTO borAge, minAge, maxAge
FROM Borrower brw, BookTitle bt
  INNER JOIN BookCopy bc ON  :new.bcID = bc.bcID
  INNER JOIN BookTitle bt2 ON bt2.isbn = bc.isbn

但这可以为您提供更多预期结果,因为您将BookTitle表放在FROM部分上。


我认为只有这可能是你真正需要的:

SELECT brw.borage, bt.agelower, bt.ageupper
INTO borAge, minAge, maxAge
FROM Borrower brw
  INNER JOIN BookCopy bc ON  :new.bcID = bc.bcID
  INNER JOIN BookTitle bt ON bt.isbn = bc.isbn

答案 1 :(得分:1)

你定义了BookTitle bt两次。