首页 / ORACLE / Oracle存储过程,游标使用
Oracle存储过程,游标使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle存储过程,游标使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3117字,纯文字阅读大概需要5分钟。
内容图文
![Oracle存储过程,游标使用](/upload/InfoBanner/zyjiaocheng/482/7a9aa783ff2c4dd69ee56ed6627b5fe4.jpg)
调用该过程
SQL> var vempno number; SQL> var vename varchar2(10); SQL> exec :vempno:=7934; SQL> exec proc_in_out_test(:vempno,:vename); PL/SQL procedure successfully completed vename --------- MILLER SQL> exec :vempno:=7935; SQL> exec proc_in_out_test(:vempno,:vename); begin proc_in_out_test(:vempno,:vename); end; ORA-20000: 该员工不存在 ORA-06512: 在 "SCOTT.PROC_IN_OUT_TEST", line 7 ORA-06512: 在 line 1
显示游标语法:
CURSOR cursor_name IS select_statement
一个简单的例子:
DECLARE v_empname emp.ename%TYPE; v_job emp.job%TYPE; v_deptno emp.deptno%TYPE; CURSOR emp_test IS --声明游标 SELECT ename, job FROM emp WHERE deptno = v_deptno; BEGIN v_deptno := 10; OPEN emp_test; --打开游标 --循环游标 LOOP FETCH emp_test INTO v_empname, v_job; --取值 EXIT WHEN emp_test%NOTFOUND; --当没有记录时退出循环 dbms_output.put_line(‘empname=‘ || v_empname || ‘,job=‘ || v_job); END LOOP; CLOSE emp_test; END; --游标的属性有:%FOUND,%NOTFOUNRD,%ISOPEN,%ROWCOUNT; --%FOUND:已检索到记录时,返回true --%NOTFOUNRD:检索不到记录时,返回true --%ISOPEN:游标已打开时返回true --%ROWCOUNT:代表检索的记录数,从1开始
参数化游标只是声明方式和打开游标时有些不同
CURSOR emp_test2(p_deptno emp.deptno%TYPE) IS --声明游标
SELECT ename, job FROM emp WHERE deptno = p_deptno;
OPEN emp_test2(10); --打开游标
游标变量:
定义游标变更类型
TYPE type_name IS REF CURSOR[RETURN return_type];
CREATE OR REPLACE PROCEDURE cursorvariabletest(p_table IN VARCHAR2) IS TYPE t_emp_dept IS REF CURSOR; --定义游标变量类型 v_cursorvar t_emp_dept; --声明游标变量 v_empno emp.empno%TYPE; v_ename emp.ename%TYPE; v_job emp.job%TYPE; v_dname dept.dname%TYPE; v_loc dept.loc%TYPE; BEGIN IF p_table = ‘emp‘ THEN v_empno := 7369; OPEN v_cursorvar FOR SELECT ename, job FROM emp WHERE empno = v_empno; --打开游标变量 ELSE IF p_table = ‘dept‘ THEN OPEN v_cursorvar FOR SELECT dname, loc FROM dept; --打开游标变量 ELSE raise_application_error(-20000, ‘请输入emp或dept!‘); END IF; END IF; LOOP IF p_table = ‘emp‘ THEN FETCH v_cursorvar INTO v_ename, v_job; EXIT WHEN v_cursorvar%NOTFOUND; dbms_output.put_line(‘ename=‘ || v_ename || ‘,job=‘ || v_job); ELSE FETCH v_cursorvar INTO v_dname, v_loc; EXIT WHEN v_cursorvar%NOTFOUND; dbms_output.put_line(‘dname=‘ || v_dname || ‘,loc=‘ || v_loc); END IF; END LOOP; CLOSE v_cursorvar; --关闭游标变量 END;
约束与无约束的游标变量
无约束的游标变量包含特定的返回类型(type,rowtype,record等),查询的选择列表必须匹配游标的返回类型,否则会出现预
定义的ROWTYPE_MISMATCH异常。约束的游标变量没有Return子句。
Oracle存储过程,游标使用
标签:blank varchar except 游标 var 否则 etc iso color
本文系统来源:http://www.cnblogs.com/lisidapao/p/6846937.html
内容总结
以上是互联网集市为您收集整理的Oracle存储过程,游标使用全部内容,希望文章能够帮你解决Oracle存储过程,游标使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。