- 浏览: 548991 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
[size=medium][/size]SQL> set serveroutput on;
SQL> remark 游标:一个特定结果集中的行指针,它指向确定的记录,通过移动游标可以操作不同的行数据
SQL> remark 游标的类型:静态游标 引用游标
SQL> remark 静态游标分为:隐式游标 显示游标
SQL> remark 隐式游标:系统进行查询和修改操作的时候自动调用的
SQL> remark 显示游标:开发人员显示的定义游标的查询语句
SQL> remark 游标的属性 4 个:
SQL> remark %isopen %found %notfound %rowcount 对应的关系分别是:
SQL> remark %isopen :判断游标是否被打开 true/false;
SQL> remark %found :判断游标的行是否有效 与 %nofound 结果是相反的
SQL> remark %rowcount 返回当前位置为止游标读取的记录行数。 值为整数
SQL> remark ....显示游标-普通游标--.................
SQL> declare
2 cursor curemp is select empno ,ename from emp;
3 theempno emp.empno%type;
4 theename emp.ename%type;
5 begin
6 open curemp;
7 loop
8 fetch curemp into theempno,theename;
9 exit when curemp%nofound;
10 dbms_output.put_line('theempno'||theempno);
11 end loop;
12 close curemp;
13 end;
14 /
exit when curemp%nofound;
*
ERROR at line 9:
ORA-06550: line 9, column 19:
PLS-00208: identifier 'NOFOUND' is not a legal cursor attribute
ORA-06550: line 9, column 2:
PL/SQL: Statement ignored
SQL> edit;
Wrote file afiedt.buf
1 declare
2 cursor curemp is select empno ,ename from emp where deptno=30;
3 theempno emp.empno%type;
4 theename emp.ename%type;
5 begin
6 open curemp;
7 loop
8 fetch curemp into theempno,theename;
9 exit when curemp%notfound;
10 dbms_output.put_line('theempno'||theempno);
11 end loop;
12 close curemp;
13* end;
SQL> /
theempno7499
theempno7521
theempno7654
theempno7698
theempno7844
theempno7900
PL/SQL procedure successfully completed.
SQL> remark 使用fetch从游标中获取数据给参数赋值的时候要与查询语句匹配,如果查询语句式select * from....那么需要定一个rowtype的变量
SQL> declare
2 emprow emp%rowtype;
3 cursor empcur is select * from emp where deptno=30;
4 begin
5 open empcur;
6 loop
7 fetch empcur into emprow;
8 exit when empcur%notfound;
9 dbms_output.put_line('编号:'||emprow.empno);
10 end loop;
11 close empcur;
12 end;
13 /
编号:7499
编号:7521
编号:7654
编号:7698
编号:7844
编号:7900
PL/SQL procedure successfully completed.
SQL> remark RowType 类型,能获取一整行的结果集;
SQL> remark 使用显示游标的时候应该注意事项:
SQL> remark 显示游标一定关联一个查询的结果集,并且在游标定义的时候就更这个结果集绑定到了一起;
SQL> remark ............隐式游标...................
SQL> remark 对于隐式游标而言SQL%ISOPEN总是false,这是因为隐式游标在DML语句执行的时候打开,结束时就立刻关闭了。例如:
SQL> begin
2 update emp set sal=sal*1.1 where deptno=30;
3 DBMS_OUTPUT.PUT_LINE('被修改记录的条数为:'||SQL%ROWCOUNT);
4 END;
5 /
被修改记录的条数为:6
PL/SQL procedure successfully completed.
SQL> REMARK ...............................................................
SQL> REMARK ............带参数的游标.....................................
SQL> REMARK 在ORACLE中设定的参数只能在定义游标的查询中使用。
SQL> EDIT
Wrote file afiedt.buf
1 DECLARE
2 THEEMPNO EMP.DEPTNO%TYPE;
3 EMPROW EMP%ROWTYPE;
4 CURSOR EMPCUR(DELDEPTNO EMP.DEPTNO%TYPE) IS SELECT * FROM EMP WHERE DEPTNO=DELDEPTNO;
5 BEGIN
6 THEEMPNO:=&员工编号;
7 OPEN EMPCUR(THEEMPNO);
8 DBMS_OUTPUT.PUT_LINE('游标的记录行数--'||EMPCUR%ROWCOUNT);
9 LOOP
10 FETCH EMPCUR INTO EMPROW;
11 EXIT WHEN EMPCUR%NOTFOUND;
12 DBMS_OUTPUT.PUT_LINE('编号:'||EMPROW.EMPNO||'员工姓名:'||EMPROW.ENAME);
13 END LOOP;
14 DBMS_OUTPUT.PUT_LINE('游标的记录条数为:'||EMPCUR%ROWCOUNT);
15 CLOSE EMPCUR;
16* END;
SQL> /
Enter value for 员工编号: 20
old 6: THEEMPNO:=&员工编号;
new 6: THEEMPNO:=20;
游标的记录行数--0
编号:7369员工姓名:SMITH
编号:7566员工姓名:JONES
编号:7788员工姓名:SCOTT
编号:7876员工姓名:ADAMS
编号:7902员工姓名:FORD
游标的记录条数为:5
PL/SQL procedure successfully completed.
SQL> REMARK 循环游标
SQL> REMARK 操作游标的过程:打开 循环取游标数据,操作数据 关闭游标的动作
SQL> REMARK 使用循环游标可以省去这些烦琐
SQL> DECLARE
2 CURSOR EMPCUR IS SELECT * FROM EMP WHERE DEPTNO=30;
3 BEGIN
4 FOR EMPROW IN EMPCUR
5 LOOP
6 DBMS_OUTPUT.PUT_LINE('编号:'||EMPROW.EMPNO||'姓名:'||EMPROW.ENAME);
7 END LOOP;
8 END;
9 /
编号:7499姓名:ALLEN
编号:7521姓名:WARD
编号:7654姓名:MARTIN
编号:7698姓名:BLAKE
编号:7844姓名:TURNER
编号:7900姓名:JAMES
PL/SQL procedure successfully completed.
SQL> REMARK FOR 查询变量 IN 游标变量;
SQL> REMARK 查询变量的使用不需要声明
SQL> REMARK 查询变量是一个行对象,其结构与查询语句查询列表一致。
SQL> REMARK 获取的方法:查询变量.列名;
SQL> REMARK 查询变量只能取数据,不能给查询变量赋值;
SQL> REMARK ..........................................................
SQL> REMARK 0........................................................
SQL> REMARK 利用游标修改数据
SQL> REMARK 使用游标修改数据是:逐条获取,逐条处理;利用游标进行数据查询,需要在打开游标的时候就进行数据的锁定;
SQL> REMARK 锁定数据的语法:
SQL> REMARK 游标定义语法:CURSOR 游标名称 IS 查询语句 FOR UPDATE;
SQL> REMARK 对当前游标进行删除和修改的语法:
SQL> REMARK UPDATE 语句 WHERE CURRENT OF 游标名称;
SQL> REMARK DELETE 语句 WHERE CURRENT OF 游标名称;
SQL> DECLARE
2 CURSOR EMPCUR IS SELECT * FROM EMP FOR UPDATE;
3 BEGIN
4 FOR EMPROW IN EMPCUR
5 LOOP
6 IF EMPROW.DEPTNO=20 THEN
7 DBMS_OUTPUT.PUT_LINE('被删除的记录编号为:'||EMPROW.EMPNO);
8 DELETE FROM EMP WHERE CURRENT OF EMPCUR;
9 END IF;
10 END LOOP;
11 END;
12 /
被删除的记录编号为:7369
被删除的记录编号为:7566
被删除的记录编号为:7788
被删除的记录编号为:7876
被删除的记录编号为:7902
PL/SQL procedure successfully completed.
SQL> SPOOL OFF;
[color=olive][/color]
SQL> remark 游标:一个特定结果集中的行指针,它指向确定的记录,通过移动游标可以操作不同的行数据
SQL> remark 游标的类型:静态游标 引用游标
SQL> remark 静态游标分为:隐式游标 显示游标
SQL> remark 隐式游标:系统进行查询和修改操作的时候自动调用的
SQL> remark 显示游标:开发人员显示的定义游标的查询语句
SQL> remark 游标的属性 4 个:
SQL> remark %isopen %found %notfound %rowcount 对应的关系分别是:
SQL> remark %isopen :判断游标是否被打开 true/false;
SQL> remark %found :判断游标的行是否有效 与 %nofound 结果是相反的
SQL> remark %rowcount 返回当前位置为止游标读取的记录行数。 值为整数
SQL> remark ....显示游标-普通游标--.................
SQL> declare
2 cursor curemp is select empno ,ename from emp;
3 theempno emp.empno%type;
4 theename emp.ename%type;
5 begin
6 open curemp;
7 loop
8 fetch curemp into theempno,theename;
9 exit when curemp%nofound;
10 dbms_output.put_line('theempno'||theempno);
11 end loop;
12 close curemp;
13 end;
14 /
exit when curemp%nofound;
*
ERROR at line 9:
ORA-06550: line 9, column 19:
PLS-00208: identifier 'NOFOUND' is not a legal cursor attribute
ORA-06550: line 9, column 2:
PL/SQL: Statement ignored
SQL> edit;
Wrote file afiedt.buf
1 declare
2 cursor curemp is select empno ,ename from emp where deptno=30;
3 theempno emp.empno%type;
4 theename emp.ename%type;
5 begin
6 open curemp;
7 loop
8 fetch curemp into theempno,theename;
9 exit when curemp%notfound;
10 dbms_output.put_line('theempno'||theempno);
11 end loop;
12 close curemp;
13* end;
SQL> /
theempno7499
theempno7521
theempno7654
theempno7698
theempno7844
theempno7900
PL/SQL procedure successfully completed.
SQL> remark 使用fetch从游标中获取数据给参数赋值的时候要与查询语句匹配,如果查询语句式select * from....那么需要定一个rowtype的变量
SQL> declare
2 emprow emp%rowtype;
3 cursor empcur is select * from emp where deptno=30;
4 begin
5 open empcur;
6 loop
7 fetch empcur into emprow;
8 exit when empcur%notfound;
9 dbms_output.put_line('编号:'||emprow.empno);
10 end loop;
11 close empcur;
12 end;
13 /
编号:7499
编号:7521
编号:7654
编号:7698
编号:7844
编号:7900
PL/SQL procedure successfully completed.
SQL> remark RowType 类型,能获取一整行的结果集;
SQL> remark 使用显示游标的时候应该注意事项:
SQL> remark 显示游标一定关联一个查询的结果集,并且在游标定义的时候就更这个结果集绑定到了一起;
SQL> remark ............隐式游标...................
SQL> remark 对于隐式游标而言SQL%ISOPEN总是false,这是因为隐式游标在DML语句执行的时候打开,结束时就立刻关闭了。例如:
SQL> begin
2 update emp set sal=sal*1.1 where deptno=30;
3 DBMS_OUTPUT.PUT_LINE('被修改记录的条数为:'||SQL%ROWCOUNT);
4 END;
5 /
被修改记录的条数为:6
PL/SQL procedure successfully completed.
SQL> REMARK ...............................................................
SQL> REMARK ............带参数的游标.....................................
SQL> REMARK 在ORACLE中设定的参数只能在定义游标的查询中使用。
SQL> EDIT
Wrote file afiedt.buf
1 DECLARE
2 THEEMPNO EMP.DEPTNO%TYPE;
3 EMPROW EMP%ROWTYPE;
4 CURSOR EMPCUR(DELDEPTNO EMP.DEPTNO%TYPE) IS SELECT * FROM EMP WHERE DEPTNO=DELDEPTNO;
5 BEGIN
6 THEEMPNO:=&员工编号;
7 OPEN EMPCUR(THEEMPNO);
8 DBMS_OUTPUT.PUT_LINE('游标的记录行数--'||EMPCUR%ROWCOUNT);
9 LOOP
10 FETCH EMPCUR INTO EMPROW;
11 EXIT WHEN EMPCUR%NOTFOUND;
12 DBMS_OUTPUT.PUT_LINE('编号:'||EMPROW.EMPNO||'员工姓名:'||EMPROW.ENAME);
13 END LOOP;
14 DBMS_OUTPUT.PUT_LINE('游标的记录条数为:'||EMPCUR%ROWCOUNT);
15 CLOSE EMPCUR;
16* END;
SQL> /
Enter value for 员工编号: 20
old 6: THEEMPNO:=&员工编号;
new 6: THEEMPNO:=20;
游标的记录行数--0
编号:7369员工姓名:SMITH
编号:7566员工姓名:JONES
编号:7788员工姓名:SCOTT
编号:7876员工姓名:ADAMS
编号:7902员工姓名:FORD
游标的记录条数为:5
PL/SQL procedure successfully completed.
SQL> REMARK 循环游标
SQL> REMARK 操作游标的过程:打开 循环取游标数据,操作数据 关闭游标的动作
SQL> REMARK 使用循环游标可以省去这些烦琐
SQL> DECLARE
2 CURSOR EMPCUR IS SELECT * FROM EMP WHERE DEPTNO=30;
3 BEGIN
4 FOR EMPROW IN EMPCUR
5 LOOP
6 DBMS_OUTPUT.PUT_LINE('编号:'||EMPROW.EMPNO||'姓名:'||EMPROW.ENAME);
7 END LOOP;
8 END;
9 /
编号:7499姓名:ALLEN
编号:7521姓名:WARD
编号:7654姓名:MARTIN
编号:7698姓名:BLAKE
编号:7844姓名:TURNER
编号:7900姓名:JAMES
PL/SQL procedure successfully completed.
SQL> REMARK FOR 查询变量 IN 游标变量;
SQL> REMARK 查询变量的使用不需要声明
SQL> REMARK 查询变量是一个行对象,其结构与查询语句查询列表一致。
SQL> REMARK 获取的方法:查询变量.列名;
SQL> REMARK 查询变量只能取数据,不能给查询变量赋值;
SQL> REMARK ..........................................................
SQL> REMARK 0........................................................
SQL> REMARK 利用游标修改数据
SQL> REMARK 使用游标修改数据是:逐条获取,逐条处理;利用游标进行数据查询,需要在打开游标的时候就进行数据的锁定;
SQL> REMARK 锁定数据的语法:
SQL> REMARK 游标定义语法:CURSOR 游标名称 IS 查询语句 FOR UPDATE;
SQL> REMARK 对当前游标进行删除和修改的语法:
SQL> REMARK UPDATE 语句 WHERE CURRENT OF 游标名称;
SQL> REMARK DELETE 语句 WHERE CURRENT OF 游标名称;
SQL> DECLARE
2 CURSOR EMPCUR IS SELECT * FROM EMP FOR UPDATE;
3 BEGIN
4 FOR EMPROW IN EMPCUR
5 LOOP
6 IF EMPROW.DEPTNO=20 THEN
7 DBMS_OUTPUT.PUT_LINE('被删除的记录编号为:'||EMPROW.EMPNO);
8 DELETE FROM EMP WHERE CURRENT OF EMPCUR;
9 END IF;
10 END LOOP;
11 END;
12 /
被删除的记录编号为:7369
被删除的记录编号为:7566
被删除的记录编号为:7788
被删除的记录编号为:7876
被删除的记录编号为:7902
PL/SQL procedure successfully completed.
SQL> SPOOL OFF;
[color=olive][/color]
发表评论
-
Oracle 11G 数据库卸载
2013-10-08 21:46 9821、 开始->设置->控制面板->管理工具->服务 停止所有O ... -
ORACL系统用户密码忘了解决方案
2013-09-23 13:38 986忘记密码的情况下输入下列命令: 无登陆进入SQL>:s ... -
Oracle 11G 复习大纲
2013-06-19 00:38 1535一、 第一章 Oracle 入门: 1. 账号/密码:syst ... -
Oracle 触发器
2013-04-09 15:31 633SQL> set serveroutput on; S ... -
Oracle Java连接数据库
2013-04-07 21:28 890方法一:通过Oracle数据库驱动程序:ojdbc6.jar( ... -
Oracle 内置子程序简介
2013-04-07 21:27 992SQL> set serveroutput on; S ... -
Oracle 内置子程序简介
2013-03-20 12:41 99大学生兼职支持:http://sunzonebusiness. ... -
Oracle 触发器
2013-03-20 12:40 18大学生创业支持:http://sunzonebusiness. ... -
Oracle Java连接数据库
2013-03-19 15:15 198大学生创业支持:http://sunzonebusiness. ... -
Oracle PL/SQL 事务
2013-03-14 08:26 1188SQL> set serveroutpu on; SQL ... -
Oracle PL/SQL 函数
2013-03-14 08:25 1187SQL> remark 函数:函数的定义 SQL> ... -
Oracle PL/SQL 包的使用
2013-03-14 08:23 1278SQL> set serveroutput on; SQ ... -
Oracle PL/SQL 存储过程
2013-03-14 08:22 950SQL> remark 过程、函数、包、触发器都是带有名 ... -
Oracle 游标-引用游标
2013-03-14 08:21 1246SQL> set severoutput on; SP2 ... -
Oracle 数据库对象 索引
2013-03-08 17:39 977SQL> remark 索引是关系型数据库中用于加快数据 ... -
Oracle 数据库对象-视图
2013-03-08 17:39 907SQL> remark ..............视图 ... -
Oracle 11g 数据库对象-序列
2013-03-08 17:37 1243SQL> remark 序列:Oracle中按照一定规则 ... -
Oracle 11g 数据库对象-同义词
2013-03-08 17:36 1063SQL> remark 同义词:Oracle为了方便对数 ... -
PL/SQL 中的异常 及PL/SQL中的控制语句
2013-03-07 09:25 1371[/color][color=orange]SQL> s ... -
PL/SQL
2013-03-07 09:22 801SQL> remark SQL> remark p ...
相关推荐
静态、动态sql及各种游标,适合初学者学习
1.2 什么是静态SQL和动态SQL? 4 1.3 什么是SQLCA? 4 1.4 什么是SQLDA? 5 第二节 SYBASE SQL SERVER嵌入式SQL语言 5 2.1 一个嵌入SQL语言的简单例子 5 2.2 嵌入SQL的处理过程 6 2.3 嵌入SQL语句总览 7 2.3.1 宿主...
Woodpecker for Oracle用以收集Oracle数据库的性能数据、参数设置等,为数据库的调整与优化提供详细可靠的动态和静态指标。Woodpecker内置监视的系统信息包括数据字典、SQL及游标、命中率、重做日志、回滚段、共享池...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
1.2 什么是静态SQL和动态SQL?4 1.3 什么是SQLCA?4 1.4 什么是SQLDA?5 第二节 SYBASE SQL SERVER嵌入式SQL语言5 2.1 一个嵌入SQL语言的简单例子5 2.2 嵌入SQL的处理过程6 2.3 嵌入SQL语句总览7 2.3.1 宿主变量7 ...
1.2 什么是静态SQL和动态SQL? 4 1.3 什么是SQLCA? 4 1.4 什么是SQLDA? 5 第二节 SYBASE SQL SERVER嵌入式SQL语言 5 2.1 一个嵌入SQL语言的简单例子 5 2.2 嵌入SQL的处理过程 6 2.3 嵌入SQL语句总览 7 2.3.1 宿主...
1.2 什么是静态SQL和动态SQL?4 1.3 什么是SQLCA?4 1.4 什么是SQLDA?5 第二节 SYBASE SQL SERVER嵌入式SQL语言5 2.1 一个嵌入SQL语言的简单例子5 2.2 嵌入SQL的处理过程6 2.3 嵌入SQL语句总览7 2.3.1 宿主...
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...
1.1.2 什么是静态SQL和动态SQL? 5 1.1.3 什么是SQLCA? 5 1.1.4 什么是SQLDA? 5 1.2 第二节 SYBASE SQL Server嵌入式SQL语言 5 1.2.1 一个嵌入SQL语言的简单例子 5 1.2.2 嵌入SQL的处理过程 7 1.2.3 嵌入SQL语句总览...
1.1.2 什么是静态SQL和动态SQL? 5 1.1.3 什么是SQLCA? 5 1.1.4 什么是SQLDA? 5 1.2 第二节 SYBASE SQL Server嵌入式SQL语言 5 1.2.1 一个嵌入SQL语言的简单例子 5 1.2.2 嵌入SQL的处理过程 7 1.2.3 嵌入SQL语句总览...
4.1.3 静态和动态SQL语句....................................................................................................12 4.1.4 嵌入的PL/SQL语句块.....................................................
Oracle_day04,游标,存储过程,存储函数,触发器 11-Maven(学习2天) Maven_day01._Maven安装.Maven整合SSH Maven_day02.Maven整合SSH.私服安装配置 12-SSH企业案例2_ERP_项目整合(学习15天) ERP_day01_ERP简介...
静态SQL 与动态SQL277 使用SQL 来编程279 总结280 问与答280 校练场280 练习281 第14 天动态使用SQL 282 目标282 快速入门282 ODBC 282 Personal Oracle 7283 InterBase SQL ISQL 283 Visual C++ 284 Delphi284 设置...
百万级的分页存储过程 CREATE PROCEDURE sp_paging @sqlstr NVARCHAR(4000), --查询字符串 @currentpage INT, --第N页>=1 @pagesize INT --每页行数 AS SET NOCOUNT ON declare @P1 INT, --P1是游标的id
13.3.2 ORACLE 207 13.3.3 SYBASE 207 13.3.4 DB2 207 13.3.5 SQL Server 207 13.4 SQL语言简介 207 13.5 常见的数据库设计问题 208 13.6 关系型数据库的设计原则 209 13.6.1 第一范式(1NF) 209 13.6.2 第二范式...
游标是什么? 43 10、视图的优缺点 43 11、列举几种表连接方式,有什么区别? 43 12、主键和外键的区别? 44 13、在数据库中查询语句速度很慢,如何优化? 44 14、数据库三范式是什么? 44 15、union和union all有什么...
动态游标与静态游标的区别? 84.dotnet由哪几个基本框架组成? 85.Oracle中SGA是什么? 86.web servers是什么? 87.UNIX中QT是什么意思? 88.在软件开发生命周期中的哪个阶段开始测试? 89.dotnet与J2EE的比较? 90....
6. 写一段Jdbc连Oracle的程序. 32 7. 编码实现内部类 34 8. 输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset 34 9. 如何去小数点前两位,并四舍五入...
199、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时...