Sql 在Oracle表中插入随机数据

Sql 在Oracle表中插入随机数据,sql,oracle,plsql,oracle11g,Sql,Oracle,Plsql,Oracle11g,要在Oracle表中创建随机数据,请执行以下操作: CREATE TABLE EVENTS( EVENTID INTEGER NOT NULL, SOURCE VARCHAR2(50 ), TYPE VARCHAR2(50 ), EVENT_DATE DATE, DESCRIPTION VARCHAR2(100 ) ) / 我试过这个: BEGIN FOR loop_counter IN 1..1000 LOOP INSERT INTO EVENTS (EVENTI

要在Oracle表中创建随机数据,请执行以下操作:

CREATE TABLE EVENTS(
  EVENTID INTEGER NOT NULL,
  SOURCE VARCHAR2(50 ),
  TYPE VARCHAR2(50 ),
  EVENT_DATE DATE,
  DESCRIPTION VARCHAR2(100 )
)
/
我试过这个:

BEGIN  
FOR loop_counter IN 1..1000 
LOOP 
INSERT INTO EVENTS (EVENTID, SOURCE, TYPE, EVENT_DATE, DESCRIPTION) VALUES (loop_counter, loop_counter, 'warning', 
DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-01-01','J') ,TO_CHAR(DATE '9999-12-31','J')), dbms_random.value(1,100)); 
END LOOP; 
COMMIT; 
END;
我得到这个错误异常

错误报告-ORA-06550:第5行第13列:PL/SQL:ORA-00932: 数据类型不一致:预期日期获取编号ORA-06550:第4行, 第1列:PL/SQL:SQL语句被忽略 655000000-“行%s,列%s:\n%s” *原因:通常是PL/SQL编译错误。 *行动:

您能告诉我如何解决此问题吗?

使用:

BEGIN  
FOR loop_counter IN 1..1000 LOOP 
INSERT INTO "EVENTS" (EVENTID, "SOURCE", TYPE, EVENT_DATE, DESCRIPTION) 
VALUES (loop_counter, loop_counter, 'warning', 
        TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-01-01','J') ,TO_CHAR(DATE '9999-12-31','J'))),'J')
        ,dbms_random.value(1,100)
       ); 
END LOOP; 
COMMIT; 
END;

变化:

  • 添加mising
    最终
    结束后
  • 引用关键字
  • 重写随机数据生成

  • 此外,如果您通过Allroundautomations使用PL/SQLDeveloper,您可以发现 这项工作的好工具:数据生成器。 它可能非常有用,因为它可以帮助生成一些数据 并将其放置在表格中

    (参见所附屏幕截图)

    插入事件(事件ID,“源”、类型、事件日期、描述)
    选择级别,级别“警告”,
    TO_DATE(TRUNC(DBMS_RANDOM.VALUE)(TO_CHAR(日期'2000-01-01','J')),TO_CHAR(日期'9999-12-31','J')),'J'))
    ,dbms_随机值(1100)
    来自双重
    
    按级别连接是的,我更新了帖子。该
    dbms_random()
    调用也不会返回日期,因此如果您尝试在
    date
    列中插入类似
    3684482.0997
    的数字,它将失败。我如何更新它?
    INSERT INTO EVENTS (EVENTID, "SOURCE", TYPE, EVENT_DATE, DESCRIPTION)
    SELECT level, level, 'warning', 
            TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-01-01','J') ,TO_CHAR(DATE '9999-12-31','J'))),'J')
            ,dbms_random.value(1,100)
      FROM DUAL
    CONNECT BY LEVEL <= 1000;