轉載-PL/SQL與sql*plus 變量小結

PL/SQL與sql*plus 變量小結

(2007-12-25 20:30:41)

 
PLSQL變量有四種類型,分別是:
- 標量類型(Scalar)
- 複合類型(Composite)
- 參照類型(Reference)
- LOB類型(Large Object)

1、標量類型:
- 只能存放單個數值的變量
- 定義時,必須要指定標量的數據類型
1.1常用標量類型
(1)VARCHAR2(n)
定義可變長度的字符串
n指定字符串最大長度
n最大值是32767字節
使用時必須指定長度
當在PLSQL塊鍾使用該數據類型操縱VARCHAR2表列時,起數值長度不應超過4000字節
(2)CHAR(n)
定義固定長度字符串
n指定字符串的最大長度
n最大值是32767自己
使用時指定長度,若沒指定,則使用默認值1
當在PLSQL塊鍾使用該數據類型操縱CHAR2表列時,起數值長度不應超過2000字節
(3)NUMBER(p,s)
定義固定長度的整數和浮點數
p表示精度,用於指定數字的總位數
s表示標度,用於指定小數點後的數字位數
(4)DATE
定義日期和數據數據
(5)BOOLEAN
定義布爾變量
值爲:TRUE、FALSE、NULL
爲PLSQL獨有數據類型,表列不能採用該數據類型
NULL表示missing、inapplicable或者unknown
(6)LONG和LONG ROW
long:數據類型用於定義變長字符串,類似於VARCHAR2數據類型,但其字符串的最大長度爲32760字節
long row:數據類型用於定義變長的二進制數據,其數據最大長度爲32760字節
(7)BINARY_INTEGER
定義整數
數值範圍-2147483647和2174483647之間
(8)BINARY_FLOAT和BINARY_DOUBLE
BINARY_FLOAT定義單精度浮點數(oracle 10g新增加)
BINARY_DOUBLE定義雙精度浮點數(oracle 10g新增加)
(9)TIMESTAMP
定義時間和日期數據(oracle 9i新增加)
對其賦值方法與對date變量賦值方法完全相同
當顯示TIMESTAMP變量數據時,不僅會顯示日期,而且還會顯示時間和上下午標記
1.2、定義標量類型
語法:
identifier [CONSTANT] datatype [NOT NULL] [ :=|DEFAULT expr]
identifier:指定變量或常量名稱
CONSTANT:指定是常量
datatype:用於指定變量或常量的類型
NOT NULL:非空,有它是必須初始化
:= :賦值符合
DEFAULT:默認值
expr:初始值
1.3、標量定義規則
每行聲明一個變量
變量的賦值使用:identifier := value;
變量名稱最多30個字符
1.4使用%TYPE屬性
安裝數據庫列或其他變量來確定新變量的類型和長度(具有動態性和綁定性)
語法:identifier Table.column_name%TYPE;
或 identifier other_variable_name%TYPE;

2、複合變量指用於存放多個值的變量
當定義複合變量時,必須要使用PL/SQL的複合數據類型
PL/SQL的複合數據類型包括:
PL/SQL記錄
PL/SQL表(索引表)
PL/SQL嵌套表
VARRAY
關於這些複合數據類型,由相關章節給出

3、參照變量指用於存放數值指針的變量
可以通過參照變量來共享相同對象,從而降低佔用空間
兩種參照變量:
遊標變量(REF CURSOR)
對象類型變量(REF obj_type)
關於這些參照變量,由相關章節給出

4、LOB變量用於存儲大批量數據的變量
分爲兩種:
內部LOB:包括CLOB、BLOB、NCLOB,它們的數據被存儲在數據庫中,並且支持事務操作
外部LOB:BFILE,該類型數據被存儲在OS文件中,並且不支持事務操作
CLOB:存儲大批量字符數據
NCLOB:存儲大批量字符數據,unicode編碼
BLOB:存儲大批量二進制數據
BFILE:存儲指向OS文件的指針

5、非PL/SQL變量5.1、替換變量(僅用於SQL *Plus或者用於原理和SQL *Plus相同的開發工具):
臨時存儲值
利用它可以達到創建通用腳本的目的
利用它可以達到和用戶交互,故在SQL *Plus中又稱交互式命令
替換變量的格式式在變量名稱前加一個&,以便在運行SQL命令時提示用戶輸入替換數據,然後按輸入數據運行SQL命令
語法:
(1)& :“&變量名”eg:&name;
生命週期:單次引用中,不需要聲明,如果替換字符或日期類型,最好用單引號擴起
使用範圍:where、order by、列表達式、表名、整個SELECT 語句中
(2)&& :“&&變量名”eg:&&name;
生命週期:整個會話(session連接),不需要聲明
(3)define :“define 變量名=變量值”eg:DEFINE a = clark;
生命週期:整個會話,預先聲明,使用時用&引用聲明的變量
define variable=用戶創建的CHAR類型的值:define 變量名=值;
define column_name(變量名):查看變量命令。
undefine 變量名:清除變量
define:查看在當前會話中所有的替換變量和它們的值
(4)accept
生命週期:整個會話
預先聲明,可以客戶化提示信息,使用時用&引用聲明的變量。
定義:
accept 變量名name number/char/date prompt '提示信息內容'即:ACC[EPT] variable [NUM[BER] | CHAR | DATE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE]
解釋:
PROMPT命令:用於輸出提示用戶的信息,以便使用戶瞭解腳本文件的功能和運行情況
PAUSE命令:用於暫停腳本文件的運行
HIDE選項:用於隱藏用戶的輸入,使別人不可見,安全
這條命令的意思是:當plsql程序段執行到變量name的時候,此時需要用戶的交互才能繼續執行下去,plsql程序段會顯示“提示信息內容”讓用戶輸入相關信息(如果指定hide選項,那麼在接下去用戶輸入的東西將被用星號顯示出來增加安全,有點像輸入密碼),用戶輸入的內容被接收到並且把它付給name,關於在“提示信息內容”下用戶輸入的內容的類型,plsql程序段開發人員來通過number/char/date指定,變量name得到正確的值以後,繼續執行相關下面的程序!
例:accept a char prompt '請輸入員工的僱傭時間(yyyy-mm-dd):' hide
例:accept a char prompt 'input a:' hide

替換變量非常的依賴SQL *Plus的環境,當環境變量verify被關閉的時候它就不可用,只有通過打開它才能使用:
set verify(環境變量) off;關閉調試命令(關掉替換過程)
set verify(環境變量) on;打開調試命令(可以看到替換過程)

5.2、SQL *PLUS環境變量(僅用於SQL *Plus或者用於原理和SQL *Plus相同的開發工具):
ECHO 顯示回顯
HEADING {OFF/ON}是否顯示列標題
ARRAYSIZE{20/n}每一次從查詢得到的返回量的大小
FEEDBACK{OFF/ON}回饋,反饋信息
LONG{80/n}on/text} LONG類型
LINESIZE 行的寬度
SET LINESIZE n(最好是在200之內)
PAGESIZE :設置頁的大小。SET PAGESIZE N
wrap{off/on} 折行
SET 修改
SHOW 顯示
SQL *PLUS中格式化顯示的命令:
COLUMN[column option]可以設置字段或字段別名的格式
COLUMN last_name HEADING employee|name '|'代表換行
col 字段名 查看命令
CLE[AR]:清除列的格式
HEA[DING] TEXT:設置列標題
FOR[MAT] FORMAT:格式化顯示列的值,對字符和數字有效,對日期無效,eg:column salary justify left format $999,999.00,其中justify left:左對齊;col manager_id format 999999999
限制字符串的長度有A+數字限制
限制數字的長度有9,有幾爲9就限制成幾位。
NOPRINT/PRINT NOPRINT:把一個字段從輸出上屏蔽掉(返回但不顯示)。
col 字段名 noprint/print.
NULL如果有NULL值,顯示什麼。
col name null 'on employee'
TTITLE[text/off/on]設置報表的表頭
BTITLE[text/off/on]設置報表的表尾
做報表的時候要先想好PAGESIZE的大小。
BREAK ON [REPORT_ELEMENT]
壓制重複值的顯示,只能跟一個字段名纔有效,eg:
select department_id,last_name
from employees
where rownum<30
order by 1,2;
break on department_id
5.3、做PL/SQL腳本文件的過程:變量定義accept
環境變量設置SET
格式控制命令
SPOOL
使用變量的SQL
SPOOL OFF
清除格式控制
重置環境變量
釋放變量
5.4、引用非PL/SQL變量當要在PL/SQL塊中引用非PL/SQL變量時,也就是要引用PL/SQL塊所在地的host變量(或稱“環境變量”)時,必須要在非PL/SQL變量前加冒號(“:”),eg:”:name”,name爲非PL/SQL變量。

原文鏈接爲:http://blog.sina.com.cn/s/blog_4f86237e010081td.html 
以上是轉載的,覺得這篇還蠻實用的,畢竟oracle的 SQL與一般的有點小區別.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章