[oracle编程]pl/sql --标量 复合变量以及游标的简单使用
2014-07-31 00:29
751 查看
说明: 使用oracle10.2 scott方案下的emp表做的练习,所有块都验证过
注意: 要先打开oracle的打印选项
声明: 多处参照韩顺平oracle视频,所以命名基本出现为sp_..
这里用的都是块,如果要写成过程,请参照下面的语法,调用方法为
exec 过程名
call 过程名 2种
--有了块之后我们很容易就可以进行封装,所以为了简单起见使用块来学习和试验
--如何使用标量****************************************常量,一般变量
--使用%type方式复制变量类型,减少错误。
v_ename varchar(10);
--可以写为
v_ename emp.ename%type;
--记录类似高级语言中的结构体,表相当于数组
--参照变量(使用最多的)****************************游标和对象类型
--一般都是用游标变量cursor
--案例1 写一个块 输入部门号得到所有所属部门人员的信息(姓名和工资)
常用的就是标量 记录 和游标了。 只要能取到值,其他的业务逻辑就可以使用变量来实现了。
本文出自 “orangleliu笔记本” 博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/38309417
注意: 要先打开oracle的打印选项
声明: 多处参照韩顺平oracle视频,所以命名基本出现为sp_..
这里用的都是块,如果要写成过程,请参照下面的语法,调用方法为
exec 过程名
call 过程名 2种
--过程的语法 更改某个人的工资 create or replace procedure sp_pro3(spName varchar2,newSal number) is begin update emp set sal=newSal where ename=spName; end; --包 生成一个包的语法 create or replace package abc is end;
--有了块之后我们很容易就可以进行封装,所以为了简单起见使用块来学习和试验
--如何使用标量****************************************常量,一般变量
--输入员工号得到工资等信息 --税率为0.03 declare --常量用c开头,变量让v开头 c_tax_rate number(7,2):=0.03; v_ename varchar(10); v_sal number(7,2); v_tax_sal number(7,2); begin select ename,sal into v_ename,v_sal from emp where empno=&no; --计算所得税,赋值符号一定不能错 v_tax_sal:=v_sal*c_tax_rate; --输出信息 dbms_output.put_line('此员工的信息如下:'||v_ename||' 工资:'||v_sal||' 税:'||v_tax_sal); end;
--使用%type方式复制变量类型,减少错误。
v_ename varchar(10);
--可以写为
v_ename emp.ename%type;
--让我们对上述的代码改写下 declare c_tax_rate number(7,2):=0.03; v_ename emp.ename%type; v_sal emp.sal%type; v_tax_sal emp.sal%type; begin select ename,sal into v_ename,v_sal from emp where empno=&no; v_tax_sal:=v_sal*c_tax_rate; dbms_output.put_line('此员工的信息如下:'||v_ename||' 工资:'||v_sal||' 税:'||v_tax_sal); end;--复合变量的使用方法***************************************记录和表
--记录类似高级语言中的结构体,表相当于数组
--使用记录变量的实例 declare --定义一个pl/sql记录类型 type emp_record_type is record(name emp.ename%type,sal emp.sal%type); --给记录一个别名 sp_record emp_record_type; begin select ename,sal into sp_record from emp where empno=&no; --获取记录里的信息的方法 dbms_output.put_line('此员工的信息如下:'||sp_record.name||' 工资:'||sp_record.sal); end;
--表类型使用的案例(接受一个值) declare --定义一个table类型的变量,存放的类型是emp.ename%type --使用的下标是整数型的 type sp_table_type is table of emp.ename%type index by binary_integer; sp_table sp_table_type; begin --下标要对应才可以,可以自己定义,这样写只能取出一个记录 select ename into sp_table(0) from emp where empno=7788; dbms_output.put_line('员工名'||sp_table(0)); end;
--参照变量(使用最多的)****************************游标和对象类型
--一般都是用游标变量cursor
--案例1 写一个块 输入部门号得到所有所属部门人员的信息(姓名和工资)
declare --定义游标类型 sp_cursor type sp_emp_cursor is ref cursor; --定义游标变量 test_cursor sp_emp_cursor; --定义变量接受姓名和工资 v_ename emp.ename%type; v_sal emp.sal%type; begin --把一个游标和select结合 open test_cursor for select ename,sal from emp where deptno=&no; --循环取出数据,循环结构使用loop结构 loop --fetch是取出游标的意思 fetch test_cursor into v_ename,v_sal; --判断退出的条件,没有就是死循环了哦 exit when test_cursor%notfound; --输出 dbms_output.put_line('姓名:'||v_ename||' 工资:'||v_sal); end loop ; end ; 结果 姓名:ALLEN 工资:1600 姓名:WARD 工资:1250 姓名:MARTIN 工资:1250 姓名:BLAKE 工资:2850 姓名:TURNER 工资:1500 姓名:JAMES 工资:950 PL/SQL procedure successfully completed
常用的就是标量 记录 和游标了。 只要能取到值,其他的业务逻辑就可以使用变量来实现了。
本文出自 “orangleliu笔记本” 博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/38309417
相关文章推荐
- [oracle编程]pl/sql --标量 复合变量以及游标的简单使用
- PL/SQL——编程——变量定义(标量、复合变量、游标变量)
- ORACLE学习之PL/SQL编程——使用游标
- oracleday19(复合类型 游标变量 pl/sql 进阶 条件分支语句 loop )
- oracle pl/sql之使用游标变量更新数据库
- pl/sql之定义并使用变量,复合类型
- OCP认证考试指南(10):使用PL/SQL进行Oracle编程
- PL/SQL中游标和游标变量的使用
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle笔记 六、PL/SQL简单语句块、变量定义
- PL/SQL中游标和游标变量的使用
- ORACLE PL/SQL编程之四:把游标说透
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle笔记 六、PL/SQL简单语句块、变量定义
- 有关pl/sql的游标, 文本拼接和绑定变量使用小心得.
- ORACLE PL/SQL循环简单使用
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle笔记 六、PL/SQL简单语句块、变量定义
- Oracle笔记 九、PL/SQL 游标的使用
- ORACLE PL/SQL编程之四 把游标说透