初学者,求一条动态plsql语句,很简单

tomiehu 2008-02-16 10:00:30
题目要求:打印100-200之间20个不重复的随机数。


我已经用 select ceil(dbms_random.value(100,200)) from dual;
这句话求到了随机数,但是不知道如何去判断,最好能够用一张表保存随机数,打印的时候先查询

我的代码如下,先不考虑重复不重复 可是打印不出。
declare
begin_no number:=0;
end_no number:=20;
rand_no number;
sql_stmt varchar(200);

begin
while begin_no=end_no
loop
sql_stmt:='select ceil(dbms_random.value(100,200)) from dual';
execute immediate sql_stmt into rand_no;
dbms_output.put_line(rand_no);
begin_no:=begin_no+1;
end loop;
end;

难道动态plsql用的不对?望各位不吝赐教,谢谢!
...全文
232 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomiehu 2008-02-18
  • 打赏
  • 举报
回复
自己解决了;

declare
begin_no number:=0;
rand_no number;
sql_stmt varchar(200);
result_no number;
begin
while begin_no<=20
loop
sql_stmt:='select ceil(dbms_random.value(100,200)) from dual';
execute immediate sql_stmt into rand_no;
--查询
sql_stmt:='select count(no) from rand_table where no=:id';
execute immediate sql_stmt into result_no using rand_no;

if result_no > 0 then
null;
else
insert into rand_table values(result_no);
dbms_output.put_line('数字:'||rand_no);
begin_no:=begin_no+1;
end if;
end loop;
rollback;
end;
tomiehu 2008-02-16
  • 打赏
  • 举报
回复
declare
begin_no number:=0;
rand_no number;
sql_stmt varchar(200);

begin
while begin_no<=20
loop
sql_stmt:='select ceil(dbms_random.value(100,200)) from dual';
execute immediate sql_stmt into rand_no;
dbms_output.put_line('数字:'||rand_no);
begin_no:=begin_no+1;
end loop;
end;

这样就可以了,我循环写错。但是没有判断重复.

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧