本文将介绍光标语法、光标属性之一。然后怎么使用光标。然后来个小实例。

光标

语法:

Cursor 光标名[(参数名 数据类型[,参数2 数据类型2]...)]

IS select 语句;

使用步骤:

1.定义光标: cursor

Cursor c1 is select ename from emp;

2.打开光标:open

Open c1;(打开光标执行查询)

3.使用循环语句开始循环光标

3.1可以使用loop循环

4.取一行光标的值:fetch

Fetch c1 into pename; (取出一行数据到变量中)

5.循环退出条件是

exit when %notfound

最后关闭光标:close

Close c1 ;(关闭光标,释放资源)

光标属性:

1:%found

2:%notfound

具体实例:

需求:

1:使用光标查询员工姓名和工资,并打印

代码:

/**

需求:

使用光标打印出每个员工的姓名和薪水

思路:

创建光标

在光标中取数据

打印


光标属性之一

1.1:%fund 发现数据

1.2:%notfund 未发现数据


光标语法:

cursor关键字:

--1:声明光标

cursor 光标名称 is select 语句;

-- 声明接收的变量

2:开始plsql begin 开始


end; 结束


3:打开光标 open 光标名称(1中声明的光标)

4:关闭光标 close 光标名称(1中声明的光标)


5:开始循环光标 使用 loo 或 for或是while都可以


6:取出一条数据

使用关键字 fetch关键字来取出

fetch 光标名称(1中声明的光标) into 到接收的变量(1中声明的)

7:退出条件

exit 光标%notfound; 就是光标未取到数据

8:进行打印

9:结束循环



**/

set serveroutput on

declare

--声明光标

cursor C1 is select ename,sal from emp;

--声明接收的变量

myename emp.ename%type;

mysal emp.sal%type;

--开始

begin

--1:打开光标

open C1;

--2:循环光标得到每一个值 使用loop循环 退出条件是 C1%notfound

loop

--3开始取值 使用的是fetch

fetch C1 into myename,mysal;

--4退出条件

exit when C1%notfound;

--打印获取到的信息

dbms_output.put_line(myename||'的薪水是:'||mysal);

end loop;

--最后 关闭光标

close C1;


end;

运行后结果:

匿名块已完成

SMITH的薪水是:800

ALLEN的薪水是:1600

WARD的薪水是:1250

JONES的薪水是:2975

MARTIN的薪水是:1250

BLAKE的薪水是:2850

CLARK的薪水是:2450

SCOTT的薪水是:3000

KING的薪水是:5000

TURNER的薪水是:1500

ADAMS的薪水是:1100

JAMES的薪水是:950

FORD的薪水是:3000

MILLER的薪水是:1300

2:使用光标打印出users表中用户名

代码

--使用光标打印出users表中用户名

set serveroutput on

declare

cursor U1 is select username from users;

myusername users.username%type;

begin

open U1;

loop

fetch U1 into myusername;

exit when U1%notfound;

dbms_output.put_line('用户名是:'||myusername);

end loop;

close U1;

end;

运行结果:

匿名块已完成

用户名是:KITI

用户名是:JACK

用户名是:TOM

————————————————————————————————

完整代码:

/**

需求:

使用光标打印出每个员工的姓名和薪水

思路:

创建光标

在光标中取数据

打印

光标属性之一

1.1:%fund 发现数据

1.2:%notfund 未发现数据

光标语法:

cursor关键字:

--1:声明光标

cursor 光标名称 is select 语句;

-- 声明接收的变量

2:开始plsql begin 开始

end; 结束

3:打开光标 open 光标名称(1中声明的光标)

4:关闭光标 close 光标名称(1中声明的光标)

5:开始循环光标 使用 loo 或 for或是while都可以

6:取出一条数据

使用关键字 fetch关键字来取出

fetch 光标名称(1中声明的光标) into 到接收的变量(1中声明的)

7:退出条件

exit 光标%notfound; 就是光标未取到数据

8:进行打印

9:结束循环

**/

set serveroutput on

declare

--声明光标

cursor C1 is select ename,sal from emp;

--声明接收的变量

myename emp.ename%type;

mysal emp.sal%type;

--开始

begin

--1:打开光标

open C1;

--2:循环光标得到每一个值 使用loop循环 退出条件是 C1%notfound

loop

--3开始取值 使用的是fetch

fetch C1 into myename,mysal;

--4退出条件

exit when C1%notfound;

--打印获取到的信息

dbms_output.put_line(myename||'的薪水是:'||mysal);

end loop;

--最后 关闭光标

close C1;

end;

--使用光标打印出users表中用户名

set serveroutput on

declare

cursor U1 is select username from users;

myusername users.username%type;

begin

open U1;

loop

fetch U1 into myusername;

exit when U1%notfound;

dbms_output.put_line('用户名是:'||myusername);

end loop;

close U1;

end;

转自;https://www.modb.pro/db/114059

最后修改:2021 年 10 月 01 日
如果觉得我的文章对你有用,请随意赞赏