- 浏览: 1475002 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (523)
- JAVA (334)
- J2EE (18)
- JSP (21)
- JavaScript (14)
- it life (2)
- mobile develop (4)
- UBUNTU (14)
- Algorithm (14)
- DataBase (56)
- Browser/Server (1)
- linux (6)
- fedora (2)
- CSS (1)
- AjAX (3)
- HTML5 (1)
- EJB (1)
- osworkflow (2)
- Java face (5)
- spring (4)
- ICE (1)
- webService (2)
- MongoDB (1)
- JavaThread (4)
- JavaCollections (3)
- Hibernate (2)
- JavaMail (1)
- JavaBasic (1)
- Cache (1)
- https (4)
- DOM4J (1)
- JDOM (0)
- Mybatis (1)
- JUNIT (1)
- eclipse (1)
- easyMock (2)
最新评论
-
yadongliang:
...
自己认为的一些技术点 -
yadongliang:
每次看你头像都看的荷尔蒙分泌失调
WebService的两种方式SOAP和REST比较 (转) -
yadongliang:
hollo 写道一直有这种感觉,盲目的跟风,确实有一些人为了潮 ...
WebService的两种方式SOAP和REST比较 (转) -
welss:
博主,JNative怎么调用dll中的这种方法: int ...
JNative调用DLL -
Java_Antelope:
session.setAttribute和session.getAttribute(
1、隐式游标
实例1、用sql%found 相当于sql.found
下面是直接拷贝过来的,没有自己亲自运行,上面的全部是经过我的运行正确的代码:
实例1、用sql%found 相当于sql.found
create or replace procedure abing is --set serveroutput on; begin declare begin update former_emp set ename='isStrong' where empno='abin'; if sql%found then dbms_output.put_line('ok'); dbms_output.put_line(sql%rowcount); end if; if sql%notfound then dbms_output.put_line('no'); end if; exception when no_data_found then dbms_output.put_line('no data found'); end; end;
begin update former_emp set ename='isStrong' where empno='abin'; if sql%found then dbms_output.put_line('ok'); dbms_output.put_line(sql%rowcount); end if; if sql%notfound then dbms_output.put_line('no'); end if; exception when no_data_found then dbms_output.put_line('no data found'); end;
create or replace procedure abin_1 is --set serveroutput on; begin declare begin update former_emp set ename='isStrong' where empno='abing'; if sql%found then dbms_output.put_line('yes'); dbms_output.put_line(sql%rowcount); end if; if sql%notfound then dbms_output.put_line('no'); end if; end; end; 测试语句: begin declare i number:=0; begin for i in 1..5 loop abin_1; end loop; end; end;
create or replace procedure abin_1 is --set serveroutput on; begin declare name former_emp.empno%type; begin select ename into name from former_emp where empno='abin'; if sql%found then dbms_output.put_line('yes'); dbms_output.put_line(sql%rowcount); dbms_output.put_line(name); end if; if sql%notfound then dbms_output.put_line('no'); end if; end; end; 测试代码: begin declare i number; begin i:=0; for i in 1..5 loop abin_1; end loop; end; end;
create or replace procedure abin_1 is begin declare var_userid number(3); var_salary number(3); cursor mysor is select userid,salary from userinfo; begin open mysor; loop fetch mysor into var_userid,var_salary; exit when mysor%notfound; if var_userid=1 then update userinfo set salary=salary+salary*0.5 where userid=var_userid; end if; if var_userid=2 then update userinfo set salary=salary+salary*0.6 where userid=var_userid; end if; if var_userid=3 then update userinfo set salary=salary+salary*0.7 where userid=var_userid; end if; commit; end loop; end; end;
create or replace procedure abin_2 is begin declare cursor mysor is select * from userinfo; begin --open mysor; for a in mysor loop dbms_output.put_line(a.username); end loop; --close mysor; end; end; 测试代码: begin abin_2; end;
create or replace procedure allcursor is begin declare type mysor is ref cursor; var_sor mysor; var_user userinfo%rowtype; var_person personinfo%rowtype; begin open var_sor for select * from userinfo; loop fetch var_sor into var_user; exit when var_sor%notfound; dbms_output.put_line(var_user.username); end loop; close var_sor; open var_sor for select * from personinfo; loop fetch var_sor into var_person; exit when var_sor%notfound; dbms_output.put_line(var_person.pname); end loop; close var_sor; end; end;
create or replace procedure scursor is begin declare cursor mycur is select ename,salary from emp1; r_emp mycur%rowtype; begin open mycur; loop fetch mycur into r_emp; exit when mycur%notfound; dbms_output.put_line('ename='||r_emp.ename||' '||'salary='||r_emp.salary); end loop; close mycur; end; end; 测试代码: begin scursor; end;
带参数的游标 与存储过程和函数相似,可以将参数传递给游标并在查询中使用。这对于处理在某种条件下打开游标的情况非常有用。它的语法如下: CURSOR cursor_name[(parameter[,parameter],...)] IS select_statement; 定义参数的语法如下: Parameter_name [IN] data_type[{:=|DEFAULT} value] 与存储过程不同的是,游标只能接受传递的值,而不能返回值。参数只定义数据类型,没有大小。 另外可以给参数设定一个缺省值,当没有参数值传递给游标时,就使用缺省值。游标中定义的参数只是一个占位符,在别处引用该参数不一定可靠。 在打开游标时给参数赋值,语法如下: OPEN cursor_name[value[,value]....]; 参数值可以是文字或变量。 例: create or replace procedure bcursor is begin declare 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 emp.salary%type; begin open c_dept; loop fetch c_dept into r_dept; exit when c_dept%notfound; dbms_output.put_line('Department='||r_dept.deptno||',dname--'||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; commit; close c_dept; end; end;
下面是直接拷贝过来的,没有自己亲自运行,上面的全部是经过我的运行正确的代码:
游标FOR循环 在大多数时候我们在设计程序的时候都遵循下面的步骤: 1、打开游标 2、开始循环 3、从游标中取值 那一行被返回 5、处理 6、关闭循环 7、关闭游标 可以简单的把这一类代码称为游标用于循环。但还有一种循环与这种类型不相同,这就是FOR循环,用于FOR循环的游标按照正常的声明方式声明,它的优点在于不需要显式的打开、关闭、取数据,测试数据的存在、定义存放数据的变量等等。游标FOR循环的语法如下: FOR record_name IN (corsor_name[(parameter[,parameter]...)] | (query_difinition) LOOP statements END LOOP; 下面我们用for循环重写上面的例子: DECALRE CURSOR c_dept IS SELECT deptno,dname FROM dept ORDER BY deptno; CURSOR c_emp (p_dept VARACHAR2) IS SELECT ename,salary FROM emp WHERE deptno=p_dept ORDER BY ename v_tot_salary EMP.SALARY%TYPE; BEGIN FOR r_dept IN c_dept LOOP DBMS_OUTPUT.PUT_LINE('Department:'|| r_dept.deptno||'-'||r_dept.dname); v_tot_salary:=0; FOR r_emp IN c_emp(r_dept.deptno) LOOP DBMS_OUTPUT.PUT_LINE('Name:' || v_ename || 'salary:' || v_salary); v_tot_salary:=v_tot_salary+v_salary; END LOOP; DBMS_OUTPUT.PUT_LINE('Toltal Salary for dept:'|| v_tot_salary); END LOOP; END; 在游标FOR循环中使用查询 在游标FOR循环中可以定义查询,由于没有显式声明所以游标没有名字,记录名通过游标查询来定义。 DECALRE v_tot_salary EMP.SALARY%TYPE; BEGIN FOR r_dept IN (SELECT deptno,dname FROM dept ORDER BY deptno) LOOP DBMS_OUTPUT.PUT_LINE('Department:'|| r_dept.deptno||'-'||r_dept.dname); v_tot_salary:=0; FOR r_emp IN (SELECT ename,salary FROM emp WHERE deptno=p_dept ORDER BY ename) LOOP DBMS_OUTPUT.PUT_LINE('Name:'|| v_ename||' salary:'||v_salary); v_tot_salary:=v_tot_salary+v_salary; END LOOP; DBMS_OUTPUT.PUT_LINE('Toltal Salary for dept:'|| v_tot_salary); END LOOP; END;
发表评论
-
sql 统计类语句
2014-03-17 16:59 11131、统计每月的成交量,按照逆序排序(2013年以来的每月销量, ... -
Jdbc 操作Oracle CLOB字段
2013-01-08 22:10 4441//这个适用于oracle10,11,以前oracle9操作C ... -
SQL重复记录处理(查找,过滤,删除)
2012-12-30 23:43 4788HZT表结构 ID int Title nvarchar( ... -
sql 如何过滤重复记录
2012-12-29 21:37 2403请各位大侠帮忙了 问题1:对于以下几个记录 ID 123456 ... -
Mysql 触发器和存储过程
2012-09-17 12:34 9621、首先建表: create table tababin( i ... -
Sql ACID
2012-09-12 17:57 844http://nathanchen.github.com/Re ... -
Oracle 表分区学习
2012-09-12 17:52 789http://love-flying-snow.iteye.c ... -
Oracle表分区
2012-09-12 17:19 1330废话少说,直接讲分区语法。 Oracle表分区分为四种:范围分 ... -
MYSQL中 ENUM 类型的详细解释
2012-03-12 23:30 2374ENUM 类型 ENUM 是一个字 ... -
Mysql 字段数据类型/长度及表类型详细说明
2012-03-12 23:20 14956一、MySQL 字段数据类型/长度 1、数值类型 列类型 ... -
MySQL中的datetime与timestamp比较
2012-03-04 19:30 1178相同 显示 TIMESTAMP列的显示格式与DATETI ... -
mysql 存储过程例子
2011-08-21 01:35 3949mysql 存储过程例子(当前我使用的是mysql 5.5) ... -
Oracle Cursor介绍
2011-08-21 00:54 995一 概念 游标是SQL的一个内存工作区,由系统或用户以变量的 ... -
关于DB2存储过程的几个小实例
2011-08-20 03:21 2885================ CREATE PROCED ... -
oracle 游标遍历%rowtype中的记录
2011-08-20 01:49 7442那么我们使用Oracle游标 游标分为:静态游标和引用游标( ... -
oracle concat
2011-08-19 23:26 1159oracle 连接字符串: 连接两个字符串 sel ... -
oracle 存储过程
2011-08-19 21:55 956oracle的for循环,commit放在不同的位置,一个是每 ... -
sql 删除重复的记录
2011-08-19 16:32 927通过建立临时表删除: SQL>create ta ... -
Oracle 经典
2011-08-17 17:05 11971.删除重复项, 只保留第一条 delete table t ... -
DB2 分页
2011-07-25 01:59 1492//db.jsp <%@ page langua ...
相关推荐
oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结oracle游标的总结
Oracle游标的一般使用
oracle游标使用大全,详细描述了如何使用游标,创建游标等等
ORACLE 游标使用示例,给大家可以共享一下。
Oracle游标使用方法及语法大全.doc
详细的oracle游标用法,简单易懂,是学习游标的好材料
oracle 游标FOR循环
Oracle游标使用方法及语法大全
oracle游标 详解 精析 示例 真正能把游标讲透、说全、调理清晰的讲义。 游标犹如C语言的指针:灵活、实用、高效。 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。 游标是一个通过定义...
oracle游标优化以及oracle游标的作用和游标的概念。
oracle游标使用大全,其中有很多例子,有助于大家理解,希望对初学者有帮助
详细介绍了 oracle的游标使用 及 实例
Oracle 游标! 值得下载看看!资源免费,大家分享!!
关于游标使用问题的练习附答案。游标分隐式和显示游标;动态和ref游标。。。
游标是存储过程最基本的要会的,用于访问 ORACLE 数据库的 DDL 和 TCL 语
主要描述oracle中游标的学习隐式游标和显示游标
该资源系本人培训期间的关于ORCL 游标所有实用案例,在此共享希望对大家学习有所帮助
我自己编写的oracle游标案例,希望对大家有点帮助!