pl/sql記錄表(一)
------------------------------------------------------------------
----------------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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記錄Record、PL/SQL表和二維陣列SQL陣列
- PL/SQL開發記錄SQL
- pl/sql記錄型別SQL型別
- PLSQL Language Referenc-PL/SQL集合和記錄-巢狀表SQL巢狀
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄比較-將記錄插入到表中SQL
- [PL/SQL]10g PL/SQL學習筆記(一)SQL筆記
- PL/SQL 索引表SQL索引
- PLSQL Language Referenc-PL/SQL集合和記錄-使用記錄更新行SQL
- PL/SQL表(oracle記憶體表)---table()函式用法SQLOracle記憶體函式
- PL/SQL 索引表例子SQL索引
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄更新和插入的限制SQL
- 批量分析表的一段PL/SqlSQL
- PL/SQL Profiler 和SQL Developer 報表SQLDeveloper
- PLSQL Language Referenc-PL/SQL集合和記錄-使用Multiset Conditions比較巢狀表SQL巢狀
- 記錄一個sqlSQL
- [PL/SQL]10g PL/SQL學習筆記(二)SQL筆記
- [PL/SQL]10g PL/SQL學習筆記(三)SQL筆記
- PLSQL Language Referenc-PL/SQL集合和記錄-多維集合SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合型別SQL型別
- 【PL/SQL】向表中插入連續數字之PL/SQL方法SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合比較-比較巢狀表是否相等SQL巢狀
- PL/SQL表---table()函式用法SQL函式
- PL/SQL 學習日記SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合構造器SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-關聯陣列SQL陣列
- 查詢 SQL SERVER 所有表記錄數SQLServer
- PL/SQL學習筆記-1SQL筆記
- PL/SQL學習筆記-2SQL筆記
- PL/SQL學習筆記-3SQL筆記
- PL/SQL學習筆記-4SQL筆記
- PL/SQL學習筆記-5SQL筆記
- PL/SQL學習筆記-6SQL筆記
- pl/sql集合型別(一)SQL型別
- 使用after create 建立trigger記錄procedure PL/SQL程式碼變更SQL
- PL/SQL 批次Bind Forall 的效能表現SQL
- PL/SQL學習筆記-總結SQL筆記
- PL/SQLSQL
- 用SQL語言刪除表中的記錄SQL