PL/SQL介绍4

1.数据类型, 四大类
标量类型
v_ename varchar2(10);
v_sal number(6,2);--定义在-9999.99到9999.99范围的值
v_sal2 number(6,2):=5.4; --赋予初始值5.4
v_hiredate date;
v_valid boolean not null default false;

例子:
declare
c_tax_rate number(3,2):=0.03;
v_ename varchar2(10);--最好使用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;
    v_tax_sal:=v_sal*c_tax_rate;
--输出
dbms_output.put_line( '姓名是:'||v_ename|| ' 工资:'||v_sal|| ' 缴税:'||v_tax_sal);
end;
/

复合类型:类似于C语言的结构体,Java里面的类
declare
type emp_record_type is record( name emp.ename%type, salary emp.sal%type, title emp.job%type);
--定义了一个变量,变量的类型是emp_record_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. name || '工资是:'|| sp_record.sal);
end;
/

pl/sql表实例,类似于数组, oracle中允许下标为负值
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=7704;
dbms_output.put_line( '员工名:'|| sp_table(0);
end;
/

参照类型:用于存放数值指针的变量, 典型的应用就是游标
declare
--定义游标
type sp_emp_cursor is ref coursor;
--再定义一个游标变量
test_cursor sp_emp_cursor;
--定义变量
v_ename emp.ename%type;
v_sal emp.sal%type;

begin
--执行部分
open test_cursor for select ename, sal from emp where deptno=&no;
--循环取出
loop
     fetch test_cursor into v_ename, v_sal;
     --判断cursor是否为空作为退出条件
     exit when test_cursor%notfound;
    dbms_output.put_line( '姓名:'||v_ename|| '工资:'||v_sal);
end loop;
end;

大数据类型:lob(large object)








你可能感兴趣的:(数据库,职场,变量类型,休闲)