oracle中pl/sql程序高级类型的使用

来源:互联网 发布:c语言库函数大全 编辑:程序博客网 时间:2024/05/20 18:52
-- 1.pl/sql程序结构 ********************-- 定义部分declare...-- 执行部分begin...-- 异常处理部分exception...-- 结束end;-- 定义部分-- 2.最简pl/sql程序 ********************-- 执行部分beginupdate scott.dept set dname='技术部' where deptno = 60;commit;-- 结束end;-- 3.有输出显示的pl/sql程序 ********************declarev_dname varchar(40);begin select dname into v_dname from scott.dept where deptno=60; dbms_output.put_line(v_dname);end;-- 4.有输入输出的pl/sql程序 ********************declarev_dname varchar(40);begin-- update scott.dept set dname='技术部' where deptno = 60; select dname into v_dname from scott.dept where deptno=&deptno; dbms_output.put_line(v_dname);end;-- 5.%type类型的使用********************declarev_dname scott.dept.dname%type;beginselect dname into v_dname from scott.dept where deptno=&deptno;dbms_output.put_line('部门名称:'||v_dname);end;-- 6.%rowtype的使用********************declarev_dept scott.dept%rowtype;beginselect * into v_dept from scott.dept where deptno=&deptno;dbms_output.put_line('部门编号:'||v_dept.deptno||' 部门名称:'||v_dept.dname||' 地点:'||v_dept.loc);end;-- 7.record的使用********************declaretype emp_record_type is record(     ename scott.emp.ename%type,     dname scott.dept.dname%type);v_emp_record emp_record_type;begin     select e.ename , d.dname into v_emp_record from scott.emp e,scott.dept d where e.empno=&empno and e.deptno = d.deptno;     dbms_output.put_line('员工名称:'||v_emp_record.ename||' 所在部门:'||v_emp_record.dname);end;-- 8.table 类型的使用********************declaretype emp_record_type is record(     ename scott.emp.ename%type,     dname scott.dept.dname%type);type emp_table_type is table of emp_record_typeindex by varchar2(20);v_emp_table emp_table_type;beginselect e.ename , d.dname into v_emp_table(0) from scott.emp e,scott.dept d where e.deptno=d.deptno and e.empno=&no1;select e.ename , d.dname into v_emp_table(1) from scott.emp e,scott.dept d where e.deptno=d.deptno and e.empno=&no2;     dbms_output.put_line('员工名称:'||v_emp_table(0).ename||' 所在部门:'||v_emp_table(0).dname);     dbms_output.put_line('员工名称:'||v_emp_table(1).ename||' 所在部门:'||v_emp_table(1).dname);end;-- 9.table类型的多行使用********************declaretype dname_type is table of scott.dept.dname%type;v_dname dname_type;beginselect dname bulk collect into v_dname from scott.dept ;for i in v_dname.first .. v_dname.last loopdbms_output.put_line('部门名称:'||v_dname(i));end loop;end;-- 10.record、table 类型的联合使用********************declaretype emp_record_type is record(     ename scott.emp.ename%type,     dname scott.dept.dname%type);type emp_table_type is table of emp_record_type;v_emp_table emp_table_type;beginselect e.ename , d.dname bulk collect into v_emp_table from scott.emp e,scott.dept d where e.deptno=d.deptno and (e.empno=&no1 or e.empno=&no2);FOR i IN v_emp_table.first .. v_emp_table.last LOOP       dbms_output.put_line('员工名称:'||v_emp_table(i).ename||' 所在部门:'||v_emp_table(i).dname);end loop;end;-- 11.array 类型的使用********************declaretype emp_array is array(4) of scott.emp%rowtype;v_emp emp_array;beginselect * bulk collect into v_emp from scott.emp where rownum<5;for i in v_emp.first .. v_emp.last loop    dbms_output.put_line('员工名称:'||v_emp(i).ename||' 部门编号:'||v_emp(i).deptno);end loop;end;


0 0
原创粉丝点击