创建视图时语句执行错误

时间:2018-01-04 17:58:48

标签: sql oracle

有人可以帮忙解释我在执行以下声明时遇到的错误:

从命令的第1行开始出错: `

CREATE OR REPLACE FORCE VIEW "PRODILMOWNER"."ZV_LPEUR_I" ("MANDT","BALANCETYPE", "BRANCH", "CURRENCY", "AMOUNT", "COUNTERPARTY", "COUNTERPARTY_PARENT", "AMOUNT_EUR","DESCRIPTION")
AS
  SELECT a.balancetype,
    a.branch,
    a.currency,
    cast a.amount as number (25,2),
    a.counterparty,
    a.counterparty_parent,
    a.mandt,
    a.description,
   (a.amount*
    (SELECT c.midspot
    FROM ZV_EXCHANGERATES c
    WHERE c.currency =a.currency
    AND c.valuedate  =TO_CHAR(sysdate,'YYYY/MM/DD')
    AND a.valuedate = TO_CHAR(sysdate,'DD-MMM-YY')
    ) ) AS cast amount_eur as number (25,2),
  FROM ZT_LP a

命令行出错:1列:0 错误报告: SQL错误:无法从套接字读取数据

2 个答案:

答案 0 :(得分:2)

您可能有其他错误,但表达cast的正确方法是:

cast(a.amount as number(25, 2)) as amount,

请注意括号和列别名。

答案 1 :(得分:0)

如果您尝试按以下方式创建视图:

CREATE OR REPLACE FORCE VIEW "PRODILMOWNER"."ZV_LPEUR_I" ("MANDT","BALANCETYPE", "BRANCH", "CURRENCY", "AMOUNT", "COUNTERPARTY", "COUNTERPARTY_PARENT", "AMOUNT_EUR","DESCRIPTION")
AS
  SELECT a.balancetype,
    a.branch,
    a.currency,
    cast(a.amount as number(25, 2)) as amount, --cast a.amount as number (25,2),
    a.counterparty,
    a.counterparty_parent,
    a.mandt,
    a.description,
    a.amount*
    (SELECT cast(c.midspot as number(25, 2))
       FROM ZV_EXCHANGERATES c
      WHERE c.currency =a.currency
        AND c.valuedate  =TO_CHAR(sysdate,'YYYY/MM/DD')
        AND a.valuedate = TO_CHAR(sysdate,'DD-MMM-YY')
       ) AS amount_eur -- cast amount_eur as number (25,2)  --,
  FROM ZT_LP a;

删除破折号(--)旁边的部分,然后没有问题。

  • 在paranthesis中进行演员表
  • 在subselect中进行第二次演员
  • ,子句
  • 之前删除逗号FROM