本文共 2397 字,大约阅读时间需要 7 分钟。
declare type x is record( ename emp.ename%type, salary emp.sal%type, dno emp.deptno%type); xx x;begin select ename,sal,deptno into xx from emp where empno=&no; dbms_output.put_line(xx.ename);end;
--------rowtype 完全匹配表中的列declare a dept%rowtype;begin a.deptno:=11; a.dname:='UUUUUUU'; a.loc:='BEIJING'; insert into dept values (a.deptno,a.dname,a.loc);end;
--------索引表type type_name is table of element_type[not null] index by key_type;identifier type_name;--------嵌套表type type_name is table of element_type;identifier type_name;--------变长数组type type_name is varray(size_limit) of element_type[not null];identifier type_name;3.使用记录表可以有效的处理多行多列的数据
declare type x is table of emp%rowtype index by binary_integer; xx x;begin select * into xx(2) from emp where empno=&no; dbms_output.put_line('雇员姓名:'||xx(2).ename); dbms_output.put_line('雇员工资:'||xx(2).sal);end;4.集合方法
declare cursor emp_cursor is select ename,sal from emp where deptno=10; v_ename emp.ename%type; v_sal emp.sal%type;begin open emp_cursor; loop fetch emp_cursor into v_ename,v_sal; exit when emp_cursor%notfound; dbms_output.put_line(v_ename||':'||v_sal); end loop; close emp_cursor;end;
----FOR循环中直接使用子查询begin for emp_record in (select ename,sal from emp)loop dbms_output.put_line(emp_record.ename); end loop;end;
---当使用其他用户身份调用公用组件时,必须在组件名前加用户名和包名作为前缀----SCOTT.EMP_PACKAGE.。。。。----当调用远程数据库包的公用组件是,在组件名前加包名作为前缀在组件名后需要带有数据库链名作为后缀----EMP_PACKAGE.ADD_EMPLOYEE@TENDER(1111,'SCOTT',1233,10)
-----纯度级别 ---WNDS用于限制函数不能修改数据库数据 --- WNPS 用于限制函数不能修改包变量 --- RNDS 用于限制函数不能读取数据库数据 --- RNPS 用于限制函数不能读取包变量
转载地址:http://phzli.baihongyu.com/