当前位置: 代码迷 >> SQL >> PL/SQL基础 定义并运用变量
  详细解决方案

PL/SQL基础 定义并运用变量

热度:61   发布时间:2016-05-05 14:45:35.0
PL/SQL基础 定义并使用变量

·? 介绍

?? 在编写PL/SQL程序时,可以定义变量和常量;在PL/SQL程序中包括有:

???????? ①标量类型

???????? ②复合类型

???????? ③参照类型

???????? ④lob

` 标量---常用类型

?? 在编写PL/SQL块时,如果要使用变量,需在定义部分定义变量。

?? PL/SQL中定义变量和常量的语法如下:

???????? ①定义一个变长字符串

??????????? v_ename?? varchar2(10);

???????? ②定义一个小数??? 范围-9999.99~9999.99

??????????? v_sal? number(6 , 2);

???????? ③定义一个小数并给一个初始值为5.4:=是pl/sql 的赋值号

??????????? v_sal2? number(6,2):=5.4

???????? ④定义一个日期类型的数据

??????????? v_hiredate? date;

???????? ⑤定义一个布尔变量,不能为空,初始值为false

????????????v_valid?? boolean? not null? default? false ;

??? 使用标量

????????? 在定义好变量后,就可以使用这些变量。这里需要说明的是pl/sql块为变量赋值不同于其它的编程语言,需要在等号

????前加冒号(:=)

??????????eg:

???????????????? declare
???????????????????? t_tax_rate number(3,2):=0.03;
?????????????????? ? --用户名
????????????????????? v_ename varchar2(5);

????????????????????? --v_ename emp.ename%type;--此字段和表字段大小一样
??????????????????? ? 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;
??????????????? ?????? --pl/sql中可以使用+-*/
?????????????????????? --计算所得税
???????????????????????v_tax_sal:=v_sal*t_tax_rate;
?????????????????????? --输出
??????????????????????dbms_output.put_line('姓名:'||v_ename||'? 工资:'||v_sal||'? 交税:'||v_tax_sal);
??????????????? end;

·? 复合变量-------介绍

?????????用于存放多个值的变量。主要包括:

?????????①pl/sql记录

?????????②pl/sql表

?????????③嵌套表

?????????④varray

?

???????? 记录:

?????????????? 相当于高级语言中的结构体/类

???????????????? declare

??????????????????? type emp_record_type is record(
??????????????????????????? v_name emp.ename%type,
?????????????????????????? ?salary emp.sal%type,
??????????????????????????? title emp.job%type);

????????????????sp_record emp_record_type;
????????????????begin
?????????????????????? select ename , sal , job into sp_record from emp where empno=7788;

?????????????????????? dbms_output.put_line('员工名:'||sp_record.v_name);
??????????????? end;

????????? 表:

???????????????? 相当于高级语言里的数组

??????????????? declare
????????????????????? ?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;
???????????????--说明:
?????????????? --sp_table_type?? 是pl/sql表类型
?????????????? --emp.ename%type? 指定了表的元素的类型和长度
?????????????? --sp_table? 为pl/sql表变量
?????????????? --sp_table(0)则表示下标为0的元素

·? 参照变量

???? 参照变量是指用于存放数值指针的变量,通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用的空间。在编写PL/SQL程序时,可以使用游标变量和对象类型变量二种参照变量类型。

·? 参照变量?? 游标变量

?????????使用游标时,当定义游标时不需要指定相应的selec t语句,但是当使用游标时需要指定select语句,这样一个游标就与一个select语句结合了,实例如下:

?????????①请使用pl/sql编写一个块,可以输入部门号,并显示该部门所有员工姓名和他的工资。

?????????②在1基础上,如果某个员工的工资低于200元,就增加100元

  相关解决方案