--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
dec
decimal
numeric
int
integer
smallint
binary_integer
natural
naturaln
positive
positiven
simple_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;
--时间戳
版权声明:本文为Cloud2723原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。