declare
t number(5);
f number(5);
strsql varchar2(200);
str_ta varchar2(200);
str_seq varchar2(200);
begin
strsql:='insert into';
str_seq:=' create sequence seq_student increment by  1 start with 0 nomaxvalue minvalue 0';
execute immediate str_seq;
str_ta:='create table student(sid number(5),code varchar2(200),birthday date ,sex varchar2(200), address varchar2(200))';
execute immediate str_ta;
commit;
for i in 1..10
loop
select mod(i,2) into f from dual;
if f=1 then
strsql:='insert into student(sid,code,birthday,sex,address)values (seq_student.nextval,''student'||i||''',sysdate - 10*'||i||',''女'',''随便取'')';
else
strsql:='insert into student(sid,code,birthday,sex,address)values (seq_student.nextval,''student'||i||''',sysdate - 10*'||i||',''男'',''随便取'')';
end if;
execute immediate strsql;
end loop;
end;我想在判断男女的地方不用select,加if,改的简洁些, 
像 decode(sex,mod(i,2), o ,'男',1,'女')
能有更好的办法请写详细点,刚刚开始学,很多不懂。

解决方案 »

  1.   

    if f=1 then
    strsql:='insert into student(sid,code,birthday,sex,address)values (seq_student.nextval,''student'||i||''',sysdate - 10*'||i||',''女'',''随便取'')';
    else
    strsql:='insert into student(sid,code,birthday,sex,address)values (seq_student.nextval,''student'||i||''',sysdate - 10*'||i||',''男'',''随便取'')';
    end if;改成 strsql:='insert into student(sid,code,birthday,sex,address)values (seq_student.nextval,''student'||i||''',sysdate - 10*'||i||',
    case when mod('||i||',2)=1 then ''男'' else ''女'' end,''随便取'')';
      

  2.   

    declare
    t number(5);
    f number(5);
    strsql varchar2(200);
    str_ta varchar2(200);
    str_seq varchar2(200);
    begin
    strsql:='insert into';
    str_seq:=' create sequence seq_student increment by 1 start with 0 nomaxvalue minvalue 0';
    execute immediate str_seq;
    str_ta:='create table student(sid number(5),code varchar2(200),birthday date ,sex varchar2(200), address varchar2(200))';
    execute immediate str_ta;
    commit;
    strsql:='insert into student(sid,code,birthday,sex,address)values (seq_student.nextval,''student'||i||''',sysdate - 10*'||i||',
    case when mod('||i||',2)=1 then ''男'' else ''女'' end,''随便取'')';
    execute immediate strsql;
    end loop;
    end;
      

  3.   

    declare
    t number(5);
    f number(5);
    strsql varchar2(200);
    str_ta varchar2(200);
    str_seq varchar2(200);
    begin
    strsql:='insert into';
    str_seq:=' create sequence seq_student increment by 1 start with 0 nomaxvalue minvalue 0';
    execute immediate str_seq;
    str_ta:='create table student(sid number(5),code varchar2(200),birthday date ,sex varchar2(200), address varchar2(200))';
    execute immediate str_ta;
    commit;
    strsql:='insert into student(sid,code,birthday,sex,address)values (seq_student.nextval,''student'||i||''',sysdate - 10*'||i||',
    case when mod('||i||',2)=1 then ''男'' else ''女'' end,''随便取'')';
    execute immediate strsql;
    commit;
    end;
      

  4.   

    你这不都想出方法了么,用decode就可以实现啊