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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記錄一個sqlSQL
- PL/SQL 宣告SQL
- Oracle PL/SQLOracleSQL
- OCP 複習筆記之PL/SQL (1)筆記SQL
- OCP 複習筆記之PL/SQL (3)筆記SQL
- OCP 複習筆記之PL/SQL (2)筆記SQL
- OCP 複習筆記之PL/SQL (4)筆記SQL
- OCP 複習筆記之PL/SQL (5)筆記SQL
- pl/sql to_dateSQL
- PL/SQL 運算子SQL
- PL/SQL 條件SQL
- PL/SQL 迴圈SQL
- PL/SQL 遊標SQL
- pl/sql developer的一個小問題SQLDeveloper
- 使用PL/SQL找到兩個表中的相似值FKSQL
- oracle學習筆記(十七) PL/SQL高階應用Oracle筆記SQL
- Oracle PL/SQL塊簡介OracleSQL
- ultraedit高亮顯示pl/sqlSQL
- SQL Server 資料庫基本記錄(一)SQLServer資料庫
- [20201111]PL SQL function 和一致性.txtSQLFunction
- Oracle 的PL/SQL語言使用OracleSQL
- PL/SQL 條件控制語句SQL
- PL/SQL程式設計急速上手SQL程式設計
- (一)《SQL進階教程》學習記錄--CASESQL
- oracle學習筆記(十五) PL/SQL語法結構以及使用Oracle筆記SQL
- [20240607]PL/SQL中sql語句的註解.txtSQL
- SQL優化工作記錄SQL優化
- Laravel sql 日誌記錄LaravelSQL
- sql刪除重複記錄只保留一條SQL
- 使用profiler測試Oracle PL/SQL效能OracleSQL
- PL/SQL第一章--概述及變數型別SQL變數型別
- 一次SQL隱碼攻擊實戰記錄SQL
- spring-boot記錄sql探索SpringbootSQL
- Oralce之PL/SQL程式設計(遊標)SQL程式設計
- Oracle PL/SQL程式碼中的註釋OracleSQL
- PL/SQL第二章--基本語法SQL
- PL/SQL第三章--游標SQL
- 6.4. PL/SQL語法——6.4.7. 集合SQL
- ORA-06544:PL/SQL:internal error,arguments:[56319]SQLError