2

単純な 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;

4

2 に答える 2

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;
于 2013-11-08T06:38:20.340 に答える
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;
于 2013-11-08T06:36:15.517 に答える