--pl/sql 2.2 變數、賦值和運算子
--注:pl/sql變數可以分為兩大類:標量變數(基本變數)和復合變數(陣列、引用游標、使用者定義型別)
--注:資料型別的約束與非約束
--標量變數列表
--1.布林
boolean
--2.字元
char
character
long --實現向後相容性
long raw
nchar
nvarchar
rowid --實現向後相容性,替代物是(urowid)通常只有在dba工作中才會接觸到通用行id
urowid
varchar2
string
varchar
--3.日期、時間戳
-- interval:間隔; 幕間休息; (數學) 區間;
-- stamp:郵票; 印( stamp的名詞複數 ); 跺腳; 標誌
interval day to second
interval year to month
timestamp
timestamp with time zone
timestamp with local zone
--4.數值
number
double precision
float
decdecimal
numeric
intinteger
smallint
binary_integer
natural
naturaln
positive
positiven
******_integer
pls_integer
ieee-754
binary_double
binary_float
--大物件資料型別
bfile --在資料庫儲存乙個對外部二進位制檔案的引用
blob
clob
--2.2.1文字資料型別
--最佳實踐:應該始終使用可變長度字串,
--除非存在某個非常強的業務原因,要求使用固定
--長度的資料型別。
--如何對變長和定長資料型別賦值以及分配空間
declare
lv_fixed char(40) :='something not quite long';
lv_variable varchar(40) :='something not quite long';
lv_clob clob :='something not quite long';
begin
dbms_output.put_line('fixed length ['||length(lv_fixed)||']');
dbms_output.put_line('varying length ['||length(lv_variable)||']');
dbms_output.put_line('clob length ['||length(lv_clob)||']');
end;
--fixed length:[40]
--varying length[25]
--clob length[25]
--日期、時間戳型別
--注:data是日期、時間和間隔的基本型別
--1.日期
declare
lv_date_1 date := '28-apr-75';
lv_date_2 date :='29-apr-1975';
lv_date_3 date :=to_date('19750430','yyyymmdd');
lv_date date :='12-may-1075';
lv_date_4 :=sysdate;
lv_date_5:=lv_date_4;
begin
lv_date:=lv_date+3;
dbms_output.put_line('implicit ['||lv_date_1||']');
dbms_output.put_line('implicit ['||lv_date_2||']');
dbms_output.put_line('implicit ['||lv_date_3||']');
dbms_output.put_line('date['||lv_date||']');
dbms_output.put_line(to_char(lv_date_4,'dd-mon-yy hh24:mi:ss'));--日期轉化為字串
dbms_output.put_line(to_char(trunc(lv_date_5),'dd-mon-yy hh24:mi:ss'));--trunc內建函式將標量日期減少為乙個整數
end;
--2.間隔
declare
lv_interval interval day to second;
lv_interval1 interval day(9) to second;
lv_interval2 interval year to month;
lv_end_day date :=sysdate;
lv_end_day1 timestamp :=systimestamp;
lv_start_day date :='28-apr-2009';
lv_start_day1 timestamp :='28-apr-2009';
begin
lv_interval:=to_timestamp(lv_end_day)-to_timestamp(lv_start_day);
dbms_output.put_line(lv_interval);
lv_interval1:=lv_end_day1-lv_start_day1;
dbms_output.put_line(lv_interval1);
lv_interval2:=to_char(extract(year from lv_end_day)-extract(year from lv_start_day))||'-'||to_char(extract(month from lv_end_day))-extract(month from lv_start_day)));
dbms_output.put_line(lv_interval2);
end;
--時間戳
賦值運算子 , 和變數作用域
在宣告使用全域性作用域的變數時,要特別小心。package main import fmt var name string 戀碼 func setlocalname func setname func main 執行 碼農 hhbhhb 具體的差別,看 兩個運算子的文件。當你宣告乙個全域性變數,想在...
位運算子和賦值運算子
位運算只能對整數進行,可以是整數型變數也可以是被識別為整數型別的字面量。位運算是對該整數實際儲存的二進位制串的二進位制位進行操作,可以進行6種位運算 運算子作用 按位與 按位或 按位異或 按位取反 左移 右移位運算都不改變運算元本身的值,而是位運算表示式本身的值為進行位運算之後的值,例如 char ...
指標運算子和賦值運算子
取位址運算子,求得某個變數位址 指標運算子,求得所指位址的空間裡的值 c語言中,稱作賦值運算子,作用是將乙個數值賦給乙個變數或將乙個變數的值賦給另乙個變數,由賦值運算子組成的表示式稱為賦值表示式。簡單賦值 一般形式 變數名 表示式 注意 在程式中可以多次給乙個變數賦值,每賦一次值,與該變數相應的儲存...