在Oracle SQL 11g中,我尝试使用过程填充表。对于某些列,我需要从预定义的字符串集中随机获取数据。如何定义这样的集合并按随机顺序从中获取数据?
答案 0 :(得分:2)
您可以使用cte和dbms_random.value
。类似的东西:
with strings as (
select 'string1' as s from dual union all
select 'string2' as s from dual union all
select 'string3' as s from dual union all
select 'string4' as s from dual
)
select <col1>,
(select s
from (select s from strings order by dbms_random.value) s
where rownum = 1
) as RandomString
from dual;
答案 1 :(得分:0)
你能试一试吗,它正在发挥作用。
1.在表格中插入字符串列表(字符串)。
2.创建一个函数(RANDOM)来生成随机数。
3.创建一个过程(PROC_STRING),使用从函数(RANDOM)生成的随机数从(STRINGS)表中选择一个字符串名称,然后插入(NEW_TABLE)
计划:
--After executing the procedure for 3 times
SQL> exec proc_string(1);
insert successfully completed
PL/SQL procedure successfully completed.
-- Random string names got inserted into newtable
SQL> select * from new_table;
STRING_ID STRING_NAME
5 def 1
3 ghi
1 abc
执行:
dict[]
如果您有疑问,请告诉我。