create or replace procedure llx_21
v_bir date;
v_id employg.id%TYPE;
CURSOR c_emp
IS SELECT s_fun8(idcard),id
FROM employg;
BEGIN
OPEN c_emp;
FETCH c_emp INTO v_bir,v_id;
WHILE c_emp %FOUND LOOP
UPDATE employg
SET birthday = v_bir
WHERE id = v_id;
END LOOP;
CLOSE c_emp;
COMMIT;
END;create function s_fun8(card varchar2) return
date is idate date;
begin
select to_Date(substr(card,7,8),'yyyy-mm-dd') into idate from dual;
return idate;
end;
v_bir date;
v_id employg.id%TYPE;
CURSOR c_emp
IS SELECT s_fun8(idcard),id
FROM employg;
BEGIN
OPEN c_emp;
FETCH c_emp INTO v_bir,v_id;
WHILE c_emp %FOUND LOOP
UPDATE employg
SET birthday = v_bir
WHERE id = v_id;
END LOOP;
CLOSE c_emp;
COMMIT;
END;create function s_fun8(card varchar2) return
date is idate date;
begin
select to_Date(substr(card,7,8),'yyyy-mm-dd') into idate from dual;
return idate;
end;
SQL> set serveroutput on
SQL>
SQL> create or replace procedure prc as
2 cursor emp is
3 select level from dual connect by level <= 3;
4 v_id number;
5 begin
6 open emp;
7 loop
8 fetch emp
9 into v_id;
10 exit when emp%notfound;
11 dbms_output.put_line(v_id);
12 end loop;
13 end;
14 /
Procedure created
SQL> exec prc;
1
2
3
PL/SQL procedure successfully completed
SQL>
SQL> create or replace procedure prc as
2 cursor emp is
3 select level from dual connect by level <= 3;
4 v_id number;
5 begin
6 open emp;
7 loop
8 fetch emp
9 into v_id;
10 exit when emp%notfound;
11 dbms_output.put_line(v_id);
12 end loop;
13 end;
14 /
菜鸟。。 不太懂啊