在定義變數時處理可以使用oracle規定的資料型別外,還可以使用%type和%rowtype來定義變數.
%type型別的變數是專門為儲存在資料列中檢索到的值而建立的.對於使用%type建立的變數,其資料型別由系統根據檢索的資料列的資料型別決定.
%rowtype型別的變數,它可以一次儲存從資料庫檢索的一行資料。
當你不知道表中的資料型別是什麼時候?那你就考慮%type來解決此問題。
sql> declare
2 empno emp.empno%type; //宣告的時候一定要加上表的中列
3 ename emp.ename%type;
4 job emp.job%type;
5 begin
6 select empno,ename,job into empno,ename,job from emp where empno='7369';
7 dbms_output.put_line(empno||'/'||ename||'/'||job);
8 end;
9 /
7369/smith/clerk
emp.empno%type; 解析:首先它到emp表中去查詢empno列 %type返回其資料的資料型別。
%type的好處:
可移植性高(當我們對錶的資料型別發生改變時,使用者不必考慮定義變數型別)
使用者不必檢視資料型別就可以定義變數能夠儲存檢索的資料。
%rowtype
sql> declare
2 row_data emp%rowtype;
3 begin
4 select * into row_data from emp where empno='7369';
5 dbms_output.put_line(row_data.empno||'/'||row_data.ename||'/'||row_data.job);
6 end;
7 /
注意:如果定義了%rowtype型別的變數,該變數的結構與定義表的結構完全相同,查詢時必須使用*或者列舉全部的字段資訊。
列型別 字元型別
在 sql 中,將字串型別分成了 6 類,分別為 char varchar text blob enum和set.char 磁碟 二維表 在定義結構的時候就已經確定了最終資料的儲存長度。變長字串 varchar,即在分配儲存空間的時候,按照最大的空間分配,但是實際用了多少,則是根據具體的資料來確定。...
表的優化和列型別的選擇
如id int 佔四個位元組 char 4 佔四個字元長度,也是定長 time即每乙個單元值佔的位元組是固定的 核心且常用字段,宜建成定長,放在一張表,而varchar text bolb這種邊長的字段,適合單方一張表,用主鍵與核心表關聯起來。需要結合 具體業務來分析,分析欄位的查詢場景,查詢頻度低...
oracle初識005 列型別和建表
varchar2 n 變長型別,最長4000個字元 char n 定長,最長2000個字元 變長與定長的區別 varchar2 n char n 為例,2者最多能存n個字元,不同在於,char n 如果實際只存1個字元,仍佔據n個字元的空間 varchar n 如果實際存在1字元,佔據1 1 2 字...