PL/SQL 2.2 变量、赋值和运算符

--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;  
--时间戳    
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
	
   	
   

 

你可能感兴趣的:(PL/SQL)