Oracle PL-SQL中定义不明确的列

Oracle PL-SQL中定义不明确的列,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我试图在不同的表上选择多行,但无论我做什么,都无法让它工作。 我得到这个错误: Error(14,1): PL/SQL: ORA-00918: column ambiguously defined 代码(注意,这是触发器的一部分,这就是为什么会出现:new): 注:BookTitle只有一个ageLower和ageUpper列。除了琉璃苣、米纳奇和maxAge之外,没有任何偏差。您定义了两次书名bt。问题是您有两次相同的别名,请尝试以下方法: SELECT brw.borage, bt.age

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

Error(14,1): PL/SQL: ORA-00918: column ambiguously defined
代码(注意,这是触发器的一部分,这就是为什么会出现:new):


注:BookTitle只有一个ageLower和ageUpper列。除了琉璃苣、米纳奇和maxAge之外,没有任何偏差。

您定义了两次书名bt。

问题是您有两次相同的别名,请尝试以下方法:

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

bt.ageLower、bookTitle.ageupper也是如此。在我进行实验时,我将其改回了bookTitle.ageLower:/对不起,我不清楚:在第二个内部联接中,bt是指WHERE子句中定义的联接,还是该联接中定义的联接?更改其中一个的名称,并使用您所指的名称。嗯,我将最后一行更改为
internal JOIN bt ON bt.isbn=bc.isbn并显示
表格或视图不存在。
您在对
进行
操作时做了什么?您想选择结果还是将结果插入表格?@Lamak borAge、minAge、maxAge是。borAge、minAge和maxAge是变量。您的代码已编译,现在只需测试触发器:)
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