我想主键自增长或随机生成,这样批量创建数据的存储过程。
解决方案 »
- oracle 两张连接表的联合索引
- 报出"ORA-29532:Java调用被未捕获的java例外终止:......",请问如何解决?
- oracle 小机上添加裸设备时出错,请高手帮帮看看日志,指点迷津!急,在线等。。。。。。。。。。。。
- 存储过程如何返回值?
- 关于增加主键的问题
- [ORA-06531 COLLECTION_IS_NULL ] 为什么是这个错误?
- oracle数据库文档生成
- 数据统计方法问题,大家给点意见我。
- 如何全文检索blob型字段????
- 启用TDE后,设置wallet后,仍然无法创建加密表空间,oracle真难用.......
- 有关left join的问题
- 一个很难的sql查询,望大家多多帮助
--以下语句仅供参考
create table big_tab as
select object_id
from dba_objects
where rownum<10001;
怎么用呀?越简单越好。
,NAME
,YEAR
,MEMO
VALUE(
object_id,
'XZW',
'XZW',
'XZW'
)
----------
51870SQL> create sequence SEQ_9;Sequence createdSQL> create table test9 as select seq_1.nextval id,t.* from dba_objects t;Table createdSQL> select count(*) from test9; COUNT(*)
----------
51873SQL> desc test9;
Name Type Nullable Default Comments
-------------- ------------- -------- ------- --------
ID NUMBER Y
OWNER VARCHAR2(30) Y
OBJECT_NAME VARCHAR2(128) Y
SUBOBJECT_NAME VARCHAR2(30) Y
OBJECT_ID NUMBER Y
DATA_OBJECT_ID NUMBER Y
OBJECT_TYPE VARCHAR2(19) Y
CREATED DATE Y
LAST_DDL_TIME DATE Y
TIMESTAMP VARCHAR2(19) Y
STATUS VARCHAR2(7) Y
TEMPORARY VARCHAR2(1) Y
GENERATED VARCHAR2(1) Y
SECONDARY VARCHAR2(1) Y SQL>
insert into watab(id,name,year,memo)
select rownum,'xzw','xzw',xzw'
from dual
connect by rownum<=10000;
可能我确实没让大家明白我的需求:
1、通过存储过程,或SQL 实现
2、向指定表(含主键)插入数据。
select rownum,'xzw','xzw','xzw'
from dual
connect by rownum<=10000;
这个好.
--此过程从asktom摘录而来
--用途:用于为表生成随机数据create or replace procedure gen_data( p_tname in varchar2, p_records in number )
authid current_user
as
l_insert long;
l_rows number default 0;
begin dbms_application_info.set_client_info( 'gen_data ' || p_tname );
l_insert := 'insert /*+ append */ into ' || p_tname ||
' select '; for x in ( select data_type, data_length,
nvl(rpad( '9',data_precision,'9')/power(10,data_scale),9999999999) maxval
from user_tab_columns
where table_name = upper(p_tname)
order by column_id )
loop
if ( x.data_type in ('NUMBER', 'FLOAT' ))
then
l_insert := l_insert || 'dbms_random.value(1,' || x.maxval || '),';
elsif ( x.data_type = 'DATE' )
then
l_insert := l_insert ||
'sysdate+dbms_random.value+dbms_random.value(1,1000),';
else
l_insert := l_insert || 'dbms_random.string(''A'',' ||
x.data_length || '),';
end if;
end loop;
l_insert := rtrim(l_insert,',') ||
' from all_objects where rownum <= :n'; loop
execute immediate l_insert using p_records - l_rows;
l_rows := l_rows + sql%rowcount;
commit;
dbms_application_info.set_module
( l_rows || ' rows of ' || p_records, '' );
exit when ( l_rows >= p_records );
end loop;
end;
另外生成test数据,可以用pl/sql developer提供的功能