北大青鸟oracle学习笔记19 20 21 22
游标
指向上下文区域的句柄或指针
游标在服务器段存储
属性
%NOTFOUND 没有找到结果或没有操作成功
%FOUND 找到结果或操作成功
%ROWCOUNT 游标影响的行数
%ISOPEN 游标是否打开 隐式游标系统自动维护,永远为假
类型:
静态游标
-隐式游标
在oracle内部声明
用于处理DML语句和返回单行的查询
SQL为隐式游标默认名称,例:
begin
insert into student values('3','test','m',sysdate);
dbms_output.put_line('游标影响的行数:'||SQL%ROWCOUNT);
end;
-显式游标
由用户显示声明
游标指向活动集的当前行
控制显示游标
Open 打开游标
Fetch … into …
Close 关闭游标
declare
cursor stuCur is select * from student;
stuRow student%rowtype;
begin
open stuCur;
loop
fetch stuCur into sturow;
exit when stuCur%NotFound;
dbms_output.put_line(sturow.stu_name);
dbms_output.put_line(stuCur%RowCount);
end loop;
close stuCur;
end;
REF游标(动态游标)
在运行时使不同的语句与之关联
REF游标使用游标变量
游标变量:一种引用类型,可以在运行时指向不同的存储位置,close语句关闭游标并释放用于查询的资源。
类型:
有约束的游标变量:具有返回类型 定义游标时加上return 游标类型
declare
type RefstuCur is ref cursor return stu%rowtype;
stuCur RefstuCur;
sturow student%rowtype;
flag int :=0;
begin
flag := &flag;
if flag = 0 then
open stucur for select * from student where stu_id <= '2';
else
open st
相关文档:
ORACLE 10 学习笔记-第2节-命令。
1. inner join / left join/ right join / full join
select a.dname, b.ename from dept a, emp b where a.deptno=b.deptno and a.deptno=10;
select a.dname, b.ename from dept a inner join emp b
on a.deptno=b.deptno and a.deptno=10;
select dname,ename from dept natural ......
1、Oracle的Package除了把存储过程放到一堆儿以外还有没有其他的作用(好处)?
2、如何把现有的存储过程加入到Package中?
3、除了使用SQL Plus,还有没有什么工具做Package?
4、使用SQL Plus编译Package,是否每次都是编译Package中所有的存储过程?
1、你不觉得把存储过程分门别类是很重要的么,而且不同的package的 ......
SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO &nbs ......
--sqlplus
sqlplus;
sys /password as sysdba;
--查找用户ID(user#),数据库里面存放的用户都是大写!
select user#,name,password from user$ where name ='FACT';
USER# NAME   ......