declare
v_no varchar2(10);
v_name varchar2(10);
cursor cursor1 is
select name from table1 where no = v_no;
begin
v_no := '001';
open cursor;
loop
fetch cursor1 into v_name;
exit when cursor1%NOTFOUND;
.....
end loop;
end;上面的参数v_no更本不起作用,选出来的东西是表中的所有记录。
请问是什么问题呢???
oracle版本是8.0.5
谢谢
v_no varchar2(10);
v_name varchar2(10);
cursor cursor1 is
select name from table1 where no = v_no;
begin
v_no := '001';
open cursor;
loop
fetch cursor1 into v_name;
exit when cursor1%NOTFOUND;
.....
end loop;
end;上面的参数v_no更本不起作用,选出来的东西是表中的所有记录。
请问是什么问题呢???
oracle版本是8.0.5
谢谢
8.0.5没有试过
v_dep classes.detpartment%type;
v_course classes.course%type;
cursor c_classes is
select * from classes
where department=v_dep
and course=v_course;
...........
这句应该是open cursor1吧
CURSOR c_dept IS SELECT * FROM dept ORDER BY deptno;
CURSOR c_emp (p_dept VARCHAR2) IS
SELECT ename, salary
FROM emp
WHERE deptno = p_dept
ORDER BY ename;
r_dept DEPT%ROWTYPE;
v_ename EMP.ENAME%TYPE;
v_salary EMP.SALARY%TYPE;
v_tot_salary NUMBER (10,2);
BEGIN
OPEN c_dept;
LOOP
FETCH c_dept INTO r_dept;
EXIT WHEN c_dept%NOTFOUND;
DBMS_OUTPUT.PUT_LINE ('Department : ' || r_dept.deptno
|| ' - '
|| r_dept.dname);
v_tot_salary := 0;
OPEN c_emp (r_dept.deptno);
LOOP
FETCH c_emp INTO v_ename, v_salary;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUTPUT.PUT_LINE ('Name: ' ||v_ename || '
Salary:'
||v_salary);
v_tot_salary := v_tot_salary + v_salary;
END LOOP;
CLOSE c_emp;
DBMS_OUTPUT.PUT_LINE ('Total Salary for Dept: ' || v_
tot_salary);
END LOOP;
CLOSE c_dept;
END;
/
SQL> select id from test;ID
-------------------------
001
002SQL> set serveroutput on
SQL> declare
2 v_no varchar2(25);
3 v_name varchar2(25);
4 cursor cursor1 is
5 select id from test where id = v_no;
6 begin
7 v_no := '001';
8 open cursor1;
9 loop
10 exit when cursor1%NOTFOUND;
11 fetch cursor1 into v_name;
12 dbms_output.put_line(v_name);
13
14 end loop;
15 end;
16 /
001
001PL/SQL 过程已成功完成。