PLSQL Language Reference-PL/SQL語言基礎-詞彙單元-宣告
宣告
宣告為指定型別的值分配儲存空間,並命名該儲存空間,這樣才能引用它。
必須在引用物件之前宣告它。
宣告可以出現在塊、子程式和包的宣告部分。
變數宣告
變數的宣告需要指定變數的名稱和資料型別。對於大多數的資料型別,變數宣告也可以指定初始值。
變數名必須是有效的使用者定義的識別符號。
資料型別可以是任何PL/SQL資料型別。PL/SQL資料型別包括SQL資料型別。
資料型別可以是scalar(標量的)(不包含內部成員的)也可以是複合的(包含內部成員的)
--宣告變數 DECLARE part_number NUMBER(6); -- SQL資料型別 part_name VARCHAR2(20); -- SQL資料型別 in_stock BOOLEAN; -- PL/SQL資料型別 part_price NUMBER(6,2); -- SQL資料型別 part_description VARCHAR2(50);-- SQL資料型別 BEGIN NULL; END; |
常量宣告
常量的宣告相對於變數有2個附加要求:關鍵字CONSTANT和常量的初始值。(常量的初始值是它的永久的值)
DECLARE credit_limit CONSTANT REAL := 5000.00; -- SQL資料型別 max_days_in_year CONSTANT INTEGER := 366; -- SQL資料型別 urban_legend CONSTANT BOOLEAN := FALSE; -- PL/SQL資料型別 BEGIN NULL; END; |
變數和常量的初始值
在變數的宣告中初始值是可選的,除非指定了NOT NULL約束。
在常量的宣告中初始值是必須的。
如果宣告是在一個塊或子程式中,則每當程式執行到塊或子程式時,初始值都被賦值給變數或常量;如果宣告是在包規範中,則這個初始值在每個會話中被賦值一次。(無論是私有還是公有的)
進行初始賦值使用:=或DEFAULT關鍵字,後面跟一個表示式。表示式中可以包含前面宣告的常量或已經被初始化的變數。
-- 11g12_02_11.tst DECLARE hours_worked INTEGER := 40; employee_count INTEGER := 0;
pi CONSTANT REAL := 3.14159; radius REAL := 1; area REAL := (pi * radius**2); BEGIN NULL; END; |
DECLARE counter INTEGER; -- 預設的初始值為NULL BEGIN counter := counter + 1; -- NULL + 1 仍然是NULL
IF counter IS NULL THEN DBMS_OUTPUT.PUT_LINE('counter = NULL.'); END IF;
END;
|
非空約束
可以將NOT NULL約束施加於scalar變數或常量上。NOT NULL約束可以防止給它們賦NULL值。成員可以隱式地(從它的資料型別獲得)或顯式地獲得NOT NULL約束。
DECLARE --顯式指定NOT NULL約束 acct_id INTEGER(4) NOT NULL := 9999; -- 隱式地從相應的資料型別獲得NOT NULL約束 a NATURALN := 9999; b POSITIVEN := 9999; c SIMPLE_INTEGER := 9999; BEGIN NULL; END; |
PL/SQL把任何長度為0的字串看作是NULL,包括字元函式和BOOLEAN表示式的返回值。
DECLARE null_string VARCHAR2(80) := TO_CHAR(''); address VARCHAR2(80); zip_code VARCHAR2(80) := SUBSTR(address, 25, 0); name VARCHAR2(80); valid BOOLEAN := (name != ''); BEGIN IF null_string IS NULL THEN DBMS_OUTPUT.PUT_LINE('null_string = NULL'); END IF;
IF address IS NULL THEN DBMS_OUTPUT.PUT_LINE('address = NULL'); END IF;
IF zip_code IS NULL THEN DBMS_OUTPUT.PUT_LINE('zip_code = NULL'); END IF;
IF name IS NULL THEN DBMS_OUTPUT.PUT_LINE('name = NULL'); END IF;
IF valid IS NULL THEN DBMS_OUTPUT.PUT_LINE('valid = NULL'); END IF;
END;
|
%type屬性
可以用來宣告與先前宣告的變數或列具有相同資料型別的資料元素,而不需要知道具體是什麼型別。
如果被引用的成員改變了,則宣告的成員隨之改變。
引用成員 被引用成員%TYPE; |
引用成員從被引用成員繼承:
n 資料型別和大小
n 約束(除非被引用成員是列)
引用成員不繼承被引用成員的初始值。因此如果引用成員被指定或繼承了NOT NULL約束,就必須為它指定初始值。
該屬性在宣告變數儲存資料庫值的時候非常有用。
變數名 表名.列名%TYPE; |
DECLARE --employees.last_name有NOT NULL約束,但不會繼承 surname employees.last_name%TYPE; BEGIN --不會繼承被值 DBMS_OUTPUT.PUT_LINE('surname=' || surname);
END; |
DECLARE name VARCHAR(25) NOT NULL := 'Smith'; --繼承了name的NOT NULL約束 surname name%TYPE := 'Jones'; BEGIN DBMS_OUTPUT.PUT_LINE('name=' || name); DBMS_OUTPUT.PUT_LINE('surname=' || surname);
END;
|
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1102573/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 英語第三單元詞彙卷
- SQL語言基礎(資料控制語言)SQL
- SQL語言基礎(SELECT語句)SQL
- SQL語言基礎(函式)SQL函式
- SQL語言基礎(多表連線)SQL
- SQL語言基礎(子查詢)SQL
- PLSQL程式語言SQL
- SQL(Structured Query Language,結構化查詢語言)SQLStruct
- SQL語言基礎(高階查詢)SQL
- C語言英文單詞C語言
- Go 語言的詞法分析和語法分析(2)—Import宣告的解析Go詞法分析語法分析Import
- 1901:The C programming language !(C語言)C語言
- C語言基礎C語言
- dart語言基礎Dart
- 【譯】Go語言宣告語法Go
- python程式語言基礎Python
- Go語言基礎-序言Go
- c語言的基礎C語言
- e語言基礎01
- 【01】C語言基礎C語言
- 【Go語言基礎】sliceGo
- Julia語言程式基礎
- 【學習】SQL基礎-017-同義詞SQL
- T-SQL——基礎語法SQL
- 單元測試基礎
- 英語背單詞 專四詞彙 中英對照 2024年09月
- 自然語言處理工具hanlp自定義詞彙新增圖解自然語言處理HanLP圖解
- Go語言基礎語法總結Go
- Gradle 之語言基礎 GroovyGradle
- c語言基礎知識C語言
- D程式語言基礎篇
- C語言入門基礎C語言
- c語言基礎學習C語言
- C語言基礎函式C語言函式
- C語言基礎-指標C語言指標
- [06 Go語言基礎-包]Go
- 組合語言-基礎功能組合語言
- 分析C語言的宣告(2)C語言
- SQL語言SQL