忘了在TABLE中创建一个列,因此在输入表单时缺少一个文本字段

时间:2014-09-27 02:56:11

标签: sql oracle oracle-apex

在Oracle Apex中,我使用Master Detail Form创建了一个FORM。有两个表是" ORDER"和" ORDERLINE"表。它工作正常。我可以按ORDERLINE表单上的添加行按钮获取订单行详细信息。

问题:

我忘了把#34; TYPE"我创建ORDERLINE表时的列,因此ORDERLINE表缺少一个列字段" TYPE"。所以我使用alter命令添加" TYPE"列成ORDERLINE表成功。然后我回到Apex应用程序,我试图在ORDERLINE表单上更改SQL子句。当我按下#34;应用更改"时,我收到以下错误消息。

错误消息:

  

无法在Builder中解析查询。如果您认为自己的查询在语法上是正确的,请查看通用列''''''''区域源下方的复选框无需解析即可继续。
  ORA-00918:列模糊定义

在SQL子句之前:

select 
"SL_ID",
"ORD_ID",
"CW_SALESLINE"."INV_ID",
"QUANTITY",
"QUANTITY" * "PRICE" AS Amount 
from "#OWNER#"."CW_SALESLINE" , "#OWNER#"."CW_INVENTORY"
where "CW_SALESLINE"."INV_ID" = "CW_INVENTORY"."INV_ID" AND "ORD_ID" = :P11_ORD_ID

在SQL子句之后:

select 
"SL_ID",
"ORD_ID",
"CW_SALESLINE"."INV_ID",
"TYPE",
"QUANTITY",
"QUANTITY" * "PRICE" AS Amount 
from "#OWNER#"."CW_SALESLINE" , "#OWNER#"."CW_INVENTORY"
where "CW_SALESLINE"."INV_ID" = "CW_INVENTORY"."INV_ID" AND "ORD_ID" = :P11_ORD_ID

我刚刚添加了" TYPE"在SQL语句中。 ORDERLINE TABLE通过alter命令添加了TYPE列。我错过了什么? 我希望当我按下添加行按钮时," TYPE"字段显示为订单行输入

1 个答案:

答案 0 :(得分:1)

  

ORA-00918:列模糊定义

     

连接中使用的列名存在于多个表中,因此不明确地引用。在连接中,在多个表中出现的任何列名称在引用时都必须以其表名为前缀。该列应引用为TABLE.COLUMN或TABLE_ALIAS.COLUMN。


所以,只是一个疯狂的猜测:

TYPECW_SALESLINE中是否都有CW_INVENTORY列?也许您错误地将该列添加到两个表中?无论如何,这将解释"模糊定义"错误。解决方案是使用正确的表名/别名为列名添加前缀。

试试:

select 
"SL_ID",
"ORD_ID",
"CW_SALESLINE"."INV_ID",
"CW_SALESLINE"."TYPE", -- or "CW_INVENTORY"."TYPE" not clear from your question
                       -- which table was modified
"QUANTITY",
"QUANTITY" * "PRICE" AS Amount 
from "#OWNER#"."CW_SALESLINE" , "#OWNER#"."CW_INVENTORY"
where "CW_SALESLINE"."INV_ID" = "CW_INVENTORY"."INV_ID" AND "ORD_ID" = :P11_ORD_ID