2013-05-06 208 views
0

我正在打破我的頭,以找出錯誤來自哪裏。 這是我的插入語句。錯誤在第3行:ORA-00907:缺少右括號

INSERT INTO dimension_tab 
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; 

這是我得到

TRUNC(DBMS_RANDOM.value("low" = > 1, high => 3)) AS fact_1_id, 
          * 
ERROR at line 3: 
ORA-00907: missing right parenthesis 

請告訴我錯了哪裏出錯。在此感謝

+0

語法錯誤拿了?如果你在1和3之間的數字不應該是DBMS_RANDOM.value(1,3)的語法?我不確定你想用低=> 1 [DBMS_RANDOM上的Oracle鏈接](http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_random.htm) – xQbert 2013-05-06 12:10:33

+0

要做什麼您使用11g之前的Oracle版本嗎? – phatfingers 2013-05-06 12:19:01

+0

是@xQbert它是一個語法錯誤,我認爲Oracle 10g不再支持'=>' – TEMPLATE 2013-05-06 12:20:00

回答

5

運營商是=>而不是= >

+0

我已經測試都相同的錯誤被重複 – TEMPLATE 2013-05-06 12:10:37

+0

'TRUNC(DBMS_RANDOM.VALUE(低=> 1,高=> 3))AS fact_1_id, * ERROR位於第3行: ORA-00907:錯過右parenthesis' – TEMPLATE 2013-05-06 12:11:12

+0

對不起,我現在只有[SQL小提琴](http://sqlfiddle.com/#!4/d41d8/10662)進行測試。當然,在這裏你並不需要命名參數。 – 2013-05-06 12:19:59

2

您正在誤用帶參數的DBMS_RANDOM.value;使用

TRUNC(DBMS_RANDOM.value(1, 3)) AS fact_1_id, 

Example 從這個Reference

+0

謝謝@Bigood你是對的,但我確實知道他們爲什麼要保留-1。你的建議是有幫助的 – TEMPLATE 2013-05-06 12:18:57