Oracle中PL/SQL之常量和变量的定义、游标(光标)的使用
程序员文章站
2024-01-01 17:50:28
...
PL/SQL常量和变量的定义
变量的数据类型:char、varchar2、date、number、boolean、long
常量定义:isshow boolean :=true;
说明变量:说明变量名、数据类型和长度后用分号结束说明语句。例:e_name varchar2(20);
引用变量:e_name的类型与emp表中ename列的类型一样。例:e_name emp.ename%type;
记录变量:emprec代表一行数据和类型与emp表的一行数据的类型一样。例:emprec emp%rowtype;
记录变量分量的引用:例:取员工的姓名(emprec.ename),ename要和emp表的列名一致。
PL/SQL游标(光标)的使用
为什么要使用游标?在写java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时我们就要用到游标,游标可以存储查询返回的多条数据。
语法:cursor 游标名 [(参数名1 数据类型,参数名2 数据类型,......)] is select 语句;
例如:cursor c1 is select ename from emp;
游标的使用步骤:
- 打开游标:open c1;(打开游标执行查询)
- 取一行游标的值:fetch c1 into e_name;(取一行到变量中)
- 如果是循环游标,游标退出循环的方式:exit when c1%notfound
- 关闭游标:close c1;(关闭游标释放资源)
- 注意:上面的e_name必须与emp表中的ename列类型一致,需要定义e_name emp.ename%type;
游标的属性:%isopen(游标是否打开) %rocount(游标影响的行数)
%found(游标有记录) %notfound(游标没有记录)
- 没有带参数的游标例子: 查询并打印员工的姓名和薪水
declare
--定义游标(查询员工姓名和薪水)
cursor cemp is select ename,sal from emp;
pename varchar2(20);--说明变量
psal emp.sal%type;--引用变量
begin
--打开游标
open cemp;
--循环游标
loop
--取当前记录赋值给变量
fetch cemp into pename,psal;
--没有取到记录,退出循环
exit when cemp%notfound;
--打印员工姓名和薪水
dbms_output.put_line(pename||'的薪水是'||psal);
end loop;
--关闭游标
close cemp;
end;
打印结果:
- 带参数的游标例子:查询某个部门的员工姓名
declare
--形参
cursor cemp(dno number) is select ename from emp where deptno=dno;
pename emp.ename%type;--引用变量
begin
--实参(查询20号部门的员工姓名)
open cemp(20);
loop
fetch cemp into pename;
exit when cemp%notfound;
dbms_output.put_line(pename);
end loop;
close cemp;
end;
打印结果: