提取多行,存储在1个变量中,然后插入表中

时间:2019-06-01 07:57:26

标签: oracle plsql

我必须获取大容量记录并使用循环将其插入表中 我有点困惑如何使用循环来获取和插入记录。下面我分享了到目前为止的工作。

declare
    stud_Id varchar;
begin            
    stud_Id := select student_id from student_backup where is_active_flg ='Y';

    for i in 1 ..stud_Id.count
    loop
        insert into users(student_id,password,status) values(stud_Id(i),'password','status')
        where not exists (select student_id from users where student_id=stud_Id(i))
    end loop;

    commit;
end;
/

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

declare
  stud_Id student_backup.student_id%type;
begin
     select nvl(max(student_id),0) into stud_Id 
       from student_backup 
      where is_active_flg ='Y';

   if stud_Id >0 then
    for i in 1 ..stud_Id
    loop
       insert into users(student_id,password,status) 
       select b.student_id,'password','status'
         from student_backup b 
         left join users u on b.student_id = u.student_id
        where is_active_flg ='Y'
          and b.student_id = i;
    end loop;
   end if; 
    commit;
end;
/

Demo

P.S。如果我了解您要执行的操作,则无需在一开始就使用for循环(包括if语句)和select语句,而是通过删除{{1 }}。 因此,将您的代码块转换为以下代码:

and b.student_id = i

答案 1 :(得分:0)

阿卜杜勒

我认为您正在搜索以下内容:

['https://www.example.com/blog/author/abc/page/2/',
 'https://www.example.com/blog/author/abc/page/3/',
 'https://www.example.com/blog/author/abc/page/4/']

希望,这将很有用。

Demo