【问题标题】:Oracle view ORA-00907: missing right parenthesisOracle 视图 ORA-00907: 缺少右括号
【发布时间】:2019-08-10 13:30:24
【问题描述】:
SELECT 
    SALE.SaleID,
    SALE.SaleDate,
    CUSTOMER.CustomerID, 
    FIRSTNAMEFIRST(Customer.FirstName, Customer.LastName),
    SALE_ITEM.SaleItemID,
    SALE_ITEM.ItemID,
    ITEM.ItemDescription, 
    ITEM.ItemPrice
FROM CUSTOMER
INNER JOIN SALE ON CUSTOMER.CustomerID = SALE.CustomerID
INNER JOIN SALE_ITEM ON SALE.SaleID = SALE_ITEM.SaleID
INNER JOIN ITEM ON SALE_ITEM.ITEMID = ITEM.ItemID

即使我测试视图,它也会显示正确的查询结果,但我无法找出错误 ORA-00907。

函数定义

CREATE OR REPLACE FUNCTION FIRSTNAMEFIRST 
    ( FIRSTNAME IN VARCHAR2, LASTNAME IN VARCHAR2 ) RETURN VARCHAR2
AS 
BEGIN
    RETURN TRIM(FIRSTNAME) || ', ' || TRIM(LASTNAME);
END;

【问题讨论】:

  • 函数 FirstNameFirst 是什么样的?在其他地方调用它是否有效?
  • 这是函数,我可以在别处调用它 CREATE OR REPLACE FUNCTION FIRSTNAMEFIRST ( FIRSTNAME IN VARCHAR2, LASTNAME IN VARCHAR2 ) RETURN VARCHAR2 AS BEGIN RETURN TRIM(FIRSTNAME) || ', ' ||修剪(姓氏);结束;
  • 我在您粘贴的代码中看不到任何其他括号。运行查询时是否收到该错误?您可以分别从每个表中选择数据吗?
  • 仍然缺少一件事。 . . “即使我测试了视图。”视图在哪里?
  • 我们需要查看完整的CREATE OR REPLACE VIEW 声明。谢谢。

标签: sql oracle view ora-00907


【解决方案1】:

我在FIRSTNAMEFIRST(Customer.FirstName, Customer.LastName) 之后添加了 AS FullName 后它起作用了。抱歉,如果我没有提供足够的信息,谢谢。

【讨论】:

  • 当然,如果您不添加列别名 [这就是它的名称],您可能会在某些情况下看到调用它的问题。在查询窗口中,oracle 将简单地返回 FIRSTNAMEFIRST(Customer.FirstName, Customer.LastName) 之类的内容作为列标题。但是你没有为我们提供完整的问题。因此,您必须自己挖掘它。看起来您正在构建视图,并且视图列名称不能包含括号。类似的东西
  • 我们仍然不知道 如何 你得到 ORA-00907: missing right parenthesis 因为如果你尝试这样做这个create or replace view MyFuncView as select MyFunc('aaa', 'bbbb') from dual,你会得到 ORA-00998: must name this expression with a column alias 00998. 00000 - "must name this expression with a column alias" 因此你会很快知道您需要添加别名。
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
相关资源
最近更新 更多