解决方案 »
- ORACLE有关表空间的问题
- oracle 10g job不自动执行
- Oracle临时表问题
- 如何利用shell 脚本或者 perl 脚步实现oracle功能如下
- 求助:有一个日期格式的字段,如果为空就让他显示为另一个日期格式的字段,不为空就把这个日期显示出来
- 哥哥,姐姐们,送分了。
- 高手请进:一个复杂问题(对于本人来说)
- 关于sql语句(如何统计删除了几条记录?)
- Oracle的启动问题(与Oracle SQL Transparent Getway 有关)?请大家帮忙!
- 请问有哪位朋友知道杭州创业软件公司如何? (急)
- oracle中的包的使用
- 跪求:使用distinct如何能在得到目标字段不重复值的同时返回其他字段值?
我拿你代码测试多是可以通过的,或许是你student表没数据噢.仔细检查一下..
下面是我更改过后的代码你对比一下,基本没什么变动,但我执行是可以有结果的.
CREATE OR REPLACE PROCEDURE sp_get_ename IS
CURSOR cur_emp IS
SELECT ename, empno FROM emp; c_name emp.ename%TYPE;
c_eno emp.empno%TYPE;BEGIN
OPEN cur_emp; LOOP
FETCH cur_emp
INTO c_name, c_eno;
EXIT WHEN cur_emp%NOTFOUND;
IF cur_emp%FOUND
THEN DBMS_OUTPUT.put_line(c_name || '-->' || c_eno);
END IF;
END LOOP;
CLOSE cur_emp;
exception
when others then
dbms_output.put_line(sqlcode||sqlerrm);
END;begin
sp_get_ename ;
end;
我拿你代码测试多是可以通过的,或许是你student表没数据噢.仔细检查一下..
下面是我更改过后的代码你对比一下,基本没什么变动,但我执行是可以有结果的.
CREATE OR REPLACE PROCEDURE sp_get_ename IS
CURSOR cur_emp IS
SELECT ename, empno FROM emp; c_name emp.ename%TYPE;
c_eno emp.empno%TYPE;BEGIN
OPEN cur_emp; LOOP
FETCH cur_emp
INTO c_name, c_eno;
EXIT WHEN cur_emp%NOTFOUND;
IF cur_emp%FOUND
THEN DBMS_OUTPUT.put_line(c_name || '-->' || c_eno);
END IF;
END LOOP;
CLOSE cur_emp;
exception
when others then
dbms_output.put_line(sqlcode||sqlerrm);
END;begin
sp_get_ename ;
end;
sp_get_ename ;
end;去output界面里找
AS
CURSOR cur_student
IS
SELECT no, name FROM student; c_no student.no%TYPE;
c_name student.name%TYPE;
BEGIN
OPEN cur_student; LOOP
FETCH cur_student
INTO c_no, c_name; EXIT WHEN cur_student%NOTFOUND; IF cur_student%FOUND
THEN
DBMS_OUTPUT.PUT_LINE (c_no || '-->' || c_name);
END IF;
END LOOP;
END;
/自己又敲了一遍,可就是没有数据,直接执行SELECT * FROM student;可以查到数据的,比较郁闷
后面拉了句close cur_student;哪里的问题,郁闷了
FETCH cur_student
INTO c_name, c_no; EXIT WHEN cur_student%NOTFOUND;
DBMS_OUTPUT.put_line (cur_student.c_name || '-->' || cur_student.c_no);
END LOOP; CLOSE cur_student;
END;这样修改试一下!!
如果是DOS窗口下,需要打开开关
代码也可以简化成如下(游标可以定义,替代FOR后面括号里的内容):
CREATE OR REPLACE PROCEDURE sp_get_student
AS
BEGIN
for vc in (SELECT no, name FROM student) LOOP
DBMS_OUTPUT.PUT_LINE (vc.no || '-->' || vc.name);
END LOOP;
END;
把 set serveroutput on设定一下,就可以看到输出台了