简体   繁体   English

缺少'=>`右括号错误

[英]Missing Right parenthesis error with `=>`

I am getting the error after writing the below code for a simple insert..select stmnt . 在为简单的insert..select stmnt编写以下代码后,出现错误。 I am confused as there seems nothing wrong with syntax . 我很困惑,因为语法似乎没有错。


INSERT INTO dimension_tab(FACT_1_ID,FACT_2_ID,FACT_3_ID,FACT_4_ID,SALES_VALUE)
SELECT TRUNC(DBMS_RANDOM.value(low => 1, high => 3)) AS fact_1_id,
       TRUNC(DBMS_RANDOM.value(low => 1, high => 6)) AS fact_2_id,
       TRUNC(DBMS_RANDOM.value(low => 1, high => 11)) AS fact_3_id,
       TRUNC(DBMS_RANDOM.value(low => 1, high => 11)) AS fact_4_id,
       ROUND(DBMS_RANDOM.value(low => 1, high => 100), 2) AS sales_value
FROM   dual
CONNECT BY level <= 1000;
COMMIT;

You are using a valid syntax, but as you are using oracle 10g it will not support => , So you'll have to replace (low => 1, high => 3) with (1, 3) . 您使用的是有效语法,但是当您使用oracle 10g时,它将不支持=> ,因此您必须将(low => 1, high => 3)替换为(1, 3)

Try like this, 这样尝试

INSERT INTO dimension_tab
SELECT TRUNC(DBMS_RANDOM.value( 1,  3)) AS fact_1_id,
       TRUNC(DBMS_RANDOM.value( 1,  6)) AS fact_2_id,
       TRUNC(DBMS_RANDOM.value( 1,  11)) AS fact_3_id,
       TRUNC(DBMS_RANDOM.value( 1,  11)) AS fact_4_id,
       ROUND(DBMS_RANDOM.value( 1,  100), 2) AS sales_value
FROM   dual
CONNECT BY LEVEL <= 1000;

Syntax of DBMS_RANDOM.VALUE is DBMS_RANDOM.VALUE的语法为

DBMS_RANDOM.VALUE(
  low  IN  NUMBER,
  high IN  NUMBER
)

So you can use like this... 所以你可以这样使用...

INSERT INTO dimension_tab (FACT_1_ID,FACT_2_ID,FACT_3_ID,FACT_4_ID,SALES_VALUE)
SELECT TRUNC(DBMS_RANDOM.value( 1,  3)) AS fact_1_id,
       TRUNC(DBMS_RANDOM.value( 1,  6)) AS fact_2_id,
       TRUNC(DBMS_RANDOM.value( 1,  11)) AS fact_3_id,
       TRUNC(DBMS_RANDOM.value( 1,  11)) AS fact_4_id,
       ROUND(DBMS_RANDOM.value( 1,  100), 2) AS sales_value
FROM   dual
CONNECT BY LEVEL <= 1000;
COMMIT;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM