使用`=>`缺少右括号错误

时间:2013-11-08 06:11:31

标签: sql oracle oracle10g

在为简单的insert..select stmnt编写下面的代码后,我收到错误。我很困惑,因为语法似乎没有错。


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;

2 个答案:

答案 0 :(得分:0)

您使用的是有效语法,但在使用oracle 10g时,它不支持=>,因此您必须将(low => 1, high => 3)替换为(1, 3)

试试这个,

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;

答案 1 :(得分:0)

DBMS_RANDOM.VALUE的语法是

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

所以你可以这样使用......

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;