------------------------------------------------------------------
----------------pl/sql记录表-------------------------------------
------------------------------------------------------------------
pl/sql记录表可以处理多行多列,可以理解为表
示例代码如下:
declare
--它的每个元素类似于一行,故元素类型为%ROWTYPE,而非前面的%TYPE
--元素下标类型为BINARY_INTEGER
type emp_table_type is table of emp%rowtype index by binary_integer;
emp_table emp_table_type;
begin
select * into emp_table(1) from emp where empno=&no;--提取表的一行记录到EMP_TABLE(1)
dbms_output.put_line('EMPLOYEE:'||EMP_TABLE(1).ENAME);--显示表一行记录某个具体成员,在此为ENAME
end;
/
集合方法
它是ORACLE所提供的用于操纵集合变量的内置函数或过程,其中EXISTS,COUNT,LIMIT,FIRST,NEXT,
PRIOR是函数,而EXTEND,TRIM,和DELETE是过程;
集合方法的调用语法如下:
COLLECTION_NAME.METHOD_NAME [(PARAMETERS)]
注意:
集合方法只能在PL/SQL语句中使用,而不能在SQL语句中调用
集合方法EXTEND和TRIM只适用于NESTED TABLE和VARRAY,而不适用于索引表
1.exists
此方法用于确认集合元素是否存在,如存在,返回TRUE,否则为FALSE;
使用此集合方法的示例如下:
declare
type ename_table_type is table of emp.ename%type;
ename_table ename_table_type;
begin
if ename_table.exists(1) then
ename_table(1):='scott';
else
dbms_output.put_line('必须初始化集合元素');
end if;
end;/
2,count
此方法用于返回当前集合变量中的元素总个数.如果集合元素存在数值,则统计结果
会包含此元素,如果集合元素为NULL,则统计结果不会包含此元素;
使用此方法的示例如下:
DECLARE
TYPE ENAME_TABLE_TYPE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
ENAME_TABLE ENAME_TABLE_TYPE;
BEGIN
ENAME_TABLE(-5):='SCOTT';
ENAME_TABLE(1):='AX';
DBMS_OUTPUT.PUT_LINE('COLLECTION TOTAL NUMBER:'||ENAME_TABLE.COUNT);
END;
/
3,limit
此方法用于返回集合元素的最大个数,因为NESTED TABLE和索引表的元素个数没有限制,所
以调用此方法返回NULL,但对于VARRAY而言,此方法返回VARRAY所允许的最大元素个数
示例如下:
DECLARE
TYPE ENAME_TABLE_TYPE IS VARRAY(20) OF EMP.ENAME%TYPE;
ENAME_TABLE ENAME_TABLE_TYPE:=ENAME_TABLE_TYPE('MARY');
BEGIN
DBMS_OUTPUT.PUT_LINE('COLLECTION ELEMENT MAX NUMBER:'||ENAME_TABLE.LIMIT);
END;
4,FIRST和LAST
FIRST方法返回集合变量第一个元素的下标,而LAST返回集合变量最后一个元素的下标
示例如下:
DECLARE
TYPE ENAME_TABLE_TYPE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
ENAME_TABLE ENAME_TABLE_TYPE;
BEGIN
ENAME_TABLE(-5):='SCOTT';
ENAME_TABLE(-2):='SMITH';
ENAME_TABLE(2):='MARY';
ENAME_TABLE(6):='BLAKE';
DBMS_OUTPUT.PUT_LINE('FIRST ELEMENT:'||ENAME_TABLE.FIRST);
DBMS_OUTPUT.PUT_LINE('LAST ELEMENT'||ENAME_TABLE.FIRST);
END;
/
以上代码返回的结果为:
first element:-5
last element:6
5,prior和next
prior方法返回当前集合元素的前一个元素的下标,而NEXT方法返回当前集合元素的后一个元素的下标
示例如下:
declare
type ename_table_type is table of emp.ename%type index by binary_integer;
ename_table ename_table_type;
begin
ename_table(-5):='a';
ename_table(1):='b';
ename_table(3):='mary';
dbms_output.put_line('元素5的前一个元素:'||ename_table.prior(1));--返回是集合元素的下标,而非元素
end;dbms_output.put_line('元素5的下一个元素:'||ename_table.next(1));
/
----------------pl/sql记录表-------------------------------------
------------------------------------------------------------------
pl/sql记录表可以处理多行多列,可以理解为表
示例代码如下:
declare
--它的每个元素类似于一行,故元素类型为%ROWTYPE,而非前面的%TYPE
--元素下标类型为BINARY_INTEGER
type emp_table_type is table of emp%rowtype index by binary_integer;
emp_table emp_table_type;
begin
select * into emp_table(1) from emp where empno=&no;--提取表的一行记录到EMP_TABLE(1)
dbms_output.put_line('EMPLOYEE:'||EMP_TABLE(1).ENAME);--显示表一行记录某个具体成员,在此为ENAME
end;
/
集合方法
它是ORACLE所提供的用于操纵集合变量的内置函数或过程,其中EXISTS,COUNT,LIMIT,FIRST,NEXT,
PRIOR是函数,而EXTEND,TRIM,和DELETE是过程;
集合方法的调用语法如下:
COLLECTION_NAME.METHOD_NAME [(PARAMETERS)]
注意:
集合方法只能在PL/SQL语句中使用,而不能在SQL语句中调用
集合方法EXTEND和TRIM只适用于NESTED TABLE和VARRAY,而不适用于索引表
1.exists
此方法用于确认集合元素是否存在,如存在,返回TRUE,否则为FALSE;
使用此集合方法的示例如下:
declare
type ename_table_type is table of emp.ename%type;
ename_table ename_table_type;
begin
if ename_table.exists(1) then
ename_table(1):='scott';
else
dbms_output.put_line('必须初始化集合元素');
end if;
end;/
2,count
此方法用于返回当前集合变量中的元素总个数.如果集合元素存在数值,则统计结果
会包含此元素,如果集合元素为NULL,则统计结果不会包含此元素;
使用此方法的示例如下:
DECLARE
TYPE ENAME_TABLE_TYPE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
ENAME_TABLE ENAME_TABLE_TYPE;
BEGIN
ENAME_TABLE(-5):='SCOTT';
ENAME_TABLE(1):='AX';
DBMS_OUTPUT.PUT_LINE('COLLECTION TOTAL NUMBER:'||ENAME_TABLE.COUNT);
END;
/
3,limit
此方法用于返回集合元素的最大个数,因为NESTED TABLE和索引表的元素个数没有限制,所
以调用此方法返回NULL,但对于VARRAY而言,此方法返回VARRAY所允许的最大元素个数
示例如下:
DECLARE
TYPE ENAME_TABLE_TYPE IS VARRAY(20) OF EMP.ENAME%TYPE;
ENAME_TABLE ENAME_TABLE_TYPE:=ENAME_TABLE_TYPE('MARY');
BEGIN
DBMS_OUTPUT.PUT_LINE('COLLECTION ELEMENT MAX NUMBER:'||ENAME_TABLE.LIMIT);
END;
4,FIRST和LAST
FIRST方法返回集合变量第一个元素的下标,而LAST返回集合变量最后一个元素的下标
示例如下:
DECLARE
TYPE ENAME_TABLE_TYPE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
ENAME_TABLE ENAME_TABLE_TYPE;
BEGIN
ENAME_TABLE(-5):='SCOTT';
ENAME_TABLE(-2):='SMITH';
ENAME_TABLE(2):='MARY';
ENAME_TABLE(6):='BLAKE';
DBMS_OUTPUT.PUT_LINE('FIRST ELEMENT:'||ENAME_TABLE.FIRST);
DBMS_OUTPUT.PUT_LINE('LAST ELEMENT'||ENAME_TABLE.FIRST);
END;
/
以上代码返回的结果为:
first element:-5
last element:6
5,prior和next
prior方法返回当前集合元素的前一个元素的下标,而NEXT方法返回当前集合元素的后一个元素的下标
示例如下:
declare
type ename_table_type is table of emp.ename%type index by binary_integer;
ename_table ename_table_type;
begin
ename_table(-5):='a';
ename_table(1):='b';
ename_table(3):='mary';
dbms_output.put_line('元素5的前一个元素:'||ename_table.prior(1));--返回是集合元素的下标,而非元素
end;dbms_output.put_line('元素5的下一个元素:'||ename_table.next(1));
/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-708215/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-708215/