Oracle 基礎 ----臨時表和物件表
Oracle 基礎 ----臨時表和物件表
臨時表,只有當使用者向表中新增資料時, 才會為其分配儲存空間,而且為臨時表分配的空間來自臨時表空間。
建立會話級別臨時表:
SYS AS SYSDBA on 2008-03-03 15:33:14 at ORCL>edit
已將 file afiedt.buf 寫入
1 create global temporary table session_table(
2 id number,
3 op varchar2(50),
4 op_date date)
5* on commit preserve rows
SYS AS SYSDBA on 2008-03-03 15:33:27 at ORCL>/
已建立表格.
建立事務級別臨時表。
SYS AS SYSDBA on 2008-03-03 15:34:50 at ORCL>edit
已將 file afiedt.buf 寫入
1 create global temporary table transaction_table(
2 id number,
3 op varchar2(50),
4 op_date date)
5* on commit delete rows
SYS AS SYSDBA on 2008-03-03 15:34:59 at ORCL>/
已建立表格.
物件和物件表
物件型別和之前的自定義資料型別不同,它還可以為其定義函式和過程作為其方法, 個人侷的相當於java 中的class
SYS AS SYSDBA on 2008-03-03 15:35:00 at ORCL>create or replace type person as object(
2 name varchar2(10),
3 sex char(2),
4 date_of_birth date,
5 native_place varchar2(100)
6 );
7 /
已建立型別.
物件型別的名稱必須是唯一的,屬性不可以是以下型別:
1: Long 和 long raw.
2: rowed
3: pl/sql特定型別, 如:binary_integer, Boolean, %type, %rowtype等。
4:程式包中定義的資料型別。
建構函式:
SYS AS SYSDBA on 2008-03-03 15:59:13 at ORCL>declare
2 person_one person;
3 begin
4 person_one:=person('d','d',date'181-09-02','bj');
5 dbms_output.put_line(person_one.name);
6 end;
7 /
PL/SQL 程式順利完成.
引用物件型別:
SYS AS SYSDBA on 2008-03-04 08:50:37 at ORCL>edit
已將 file afiedt.buf 寫入
1 create table employee(
2 individual_info person,
3 emp_id number,
4* dep_Id number)
SYS AS SYSDBA on 2008-03-04 08:51:05 at ORCL>/
已建立表格.
SYS AS SYSDBA on 2008-03-04 08:52:53 at ORCL>edit
已將 file afiedt.buf 寫入
1 declare
2 person_one person;
3 begin
4 person_one:=person('liu','n',date'1982-08-01','bj');
5 insert into employee(individual_info,emp_id,dep_id)
6 values(person_one,123,45);
7* end;
SYS AS SYSDBA on 2008-03-04 08:55:08 at ORCL>/
PL/SQL 程式順利完成.
SYS AS SYSDBA on 2008-03-04 08:55:12 at ORCL>select e.emp_id,e.individual_info.name from emplo
yee e;
EMP_ID INDIVIDUAL
---------- ----------
123 liu
在訪問物件中單獨的屬性時,必須使用表列名。
例項方法和類方法:
SYS AS SYSDBA on 2008-03-04 09:17:33 at ORCL>create or replace type person as object(
2 name varchar2(10),
3 sex char(2),
4 date_of_birth date,
5 native_place varchar2(100),
6 member procedure change_name(name varchar2),
7 static function new(v_name varchar2,v_sex char) return person);
8 /
已建立型別.
SYS AS SYSDBA on 2008-03-04 09:20:14 at ORCL>create or replace type body person is
2 member procedure change_name(name varchar2) is
3 begin
4 self.name:=name;
5 end change_name;
6 static function new(v_name varchar2,v_sex char) return person
7 is
8 begin
9 return(person(v_name,v_sex,date'1982-2-12','shanghai'));
10 end new;
11 end;
12 /
已建立型別主體.
SYS AS SYSDBA on 2008-03-04 09:33:12 at ORCL>declare
2 person_one person;
3 begin
4 person_one:=person('liu','n',date'1982-01-1','beijing');
5 person_one.change_name('lili');
6 dbms_output.put_line(person_one.name);
7 end;
8 /
PL/SQL 程式順利完成.
對映方法:
SYS AS SYSDBA on 2008-03-04 10:07:03 at ORCL>edit
已將 file afiedt.buf 寫入
1 create or replace type body person is
2 member procedure change_name(name varchar2) is
3 begin
4 self.name:=name;
5 end change_name;
6 static function new(v_name varchar2,v_sex char) return person is
7 begin
8 return(person(v_name,v_sex,date'1982-01-01','shanghai'));
9 end new;
10 map member function compare return date is
11 begin
12 return self.date_of_birth;
13 end compare;
14* end;
SYS AS SYSDBA on 2008-03-04 10:09:40 at ORCL>/
已建立型別主體.
SYS AS SYSDBA on 2008-03-04 10:13:33 at ORCL>edit
已將 file afiedt.buf 寫入
1 declare
2 person_one person;
3 person_two person;
4 begin
5 person_one:=person.new('liu','n');
6 person_two:=person('wang','n',date'1982-2-2',null);
7 if person_one
8 dbms_output.put_line('liu');
9 elsif person_one=person_two then
10 dbms_output.put_Line('=');
11 else
12 dbms_output.put_line('wang');
13 end if;
14* end;
15 /
liu
PL/SQL 程式順利完成.
排序方法:使用order 代替 對映方法中的 map,其餘一致。
在宣告order 方法時,order方法的引數型別要和self型別一致,且只可以為函式。建構函式,MAP方法和ORDER方法在物件型別內只允許定義一次。
MAP方法和ORDER方法都有能力在sql 或PL/SQL中,針對物件進行比較,當排序或者合併大量的物件時,MAP方法具有效率方面的優勢,因為它把每個物件對映為單個標量值,然後根據標量值進行處理。
而order 方法一次只能比較2個值,所以必須反復呼叫order方法才能夠處理比較大的資料集合。
繼承:
當一個子類物件的例項被賦給一個父型別的變數時,父類變數只可以訪問父類中定義的那一部份,因為父類不知道子類增加的屬性。
在重寫(覆蓋)時一個方法時,子類賦給父類後,父類呼叫子類的方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/701141/viewspace-199379/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE臨時表和SQLSERVER臨時表異同OracleSQLServer
- 【基礎知識】基於事物的臨時表和基於會話的臨時表會話
- Oracle基礎 02 臨時表空間 tempOracle
- oracle臨時表Oracle
- Oracle 臨時表Oracle
- Oracle的臨時表Oracle
- oracle清理和重建臨時表空間Oracle
- Oracle Temporary Tables(Oracle 臨時表)Oracle
- oracle 臨時表的使用Oracle
- ORACLE臨時表總結Oracle
- Oracle全域性臨時表Oracle
- oracle 臨時表空間Oracle
- oracle臨時表空間Oracle
- oracle臨時表的用法Oracle
- 再議臨時表和表變數變數
- mysql臨時表和記憶體表MySql記憶體
- 建立基於事務和基於會話的臨時表及臨時表建索引的實驗會話索引
- Oracle 臨時表空間概念Oracle
- oracle臨時表空間組Oracle
- Oracle臨時表GLOBAL TEMPORARY TABLEOracle
- oracle的臨時表空間Oracle
- Oracle Temp 臨時表空間Oracle
- oracle臨時表的用法(轉)Oracle
- oracle 臨時表空間基本常識和操作Oracle
- Oracle修改預設表空間和預設臨時表空間Oracle
- Oracle臨時表使用注意事項Oracle
- oracle臨時表空間相關Oracle
- oracle全域性臨時表的特性Oracle
- Oracle TEMP臨時表空間概念Oracle
- Oracle 臨時表空間的概念Oracle
- oracle臨時表實際應用Oracle
- ORACLE臨時表空間總結Oracle
- oracle 重建臨時表空間 tempfileOracle
- 刪掉Oracle臨時表空間Oracle
- oracle 臨時表間重建的方法Oracle
- oracle臨時表的用法總結Oracle
- 27、oracle的臨時表問題Oracle
- ORACLE臨時表空間的清理Oracle