博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PL/SQL 数据类型和变量 -- 数值
阅读量:4050 次
发布时间:2019-05-25

本文共 3572 字,大约阅读时间需要 11 分钟。

-- Start

PL/SQL 支持 SQL 的数值数据类型,除此之外,它还定义了自己的子类型。有关 SQL 数值数据类型,参见

NUMBER

DECLARE  -- 语法:NUMBER [ (p [, s]) ]        -- p(precision) 表示精度,精度是指从左边第一个非0数字开始到右边最后一个非0数字结束的所有数字的个数,p 可以是 1 到 38 的任意数字    -- s(scale) 表示标度,标度是指小数位的个数,s 可以是 -84 到 127 的任意数字    -- 如果一个数字超过了定义的精度,Oracle 会报错    -- 如果一个数字超过了定义的标度,Oracle 会自动四舍五入    TEST1 NUMBER(7,2) := 15.8;       -- 你可能已经注意到了,标度怎么可能是负值呢?    -- 下面的列存储的是以万为单位的数字,万以下的数字将会被四舍五入,如 15000 --> 20000    TEST2 NUMBER(10,-4) := 15000;      -- 你可能也已经注意到了,标度怎么可能大于精度呢?那么请你再次看看精度的定义。    -- 下面的列用来存储诸如 0.01234 等小数点后的第一个数字是0的数字    TEST3 NUMBER(4,5) := 0.01234;       -- 下面的列定义了一个整数    TEST4 NUMBER(4) := 100;      -- 下面的列同样定义了一个整数    TEST5 NUMBER(4, 0) := 500;      -- 如果一个列没有指定精度和标度,表示最大精度和标度    TEST6 NUMBER := 88.88;BEGIN      DBMS_OUTPUT.PUT_LINE('TEST1=' || TEST1);    DBMS_OUTPUT.PUT_LINE('TEST2=' || TEST2);    DBMS_OUTPUT.PUT_LINE('TEST3=' || TEST3);    DBMS_OUTPUT.PUT_LINE('TEST4=' || TEST4);    DBMS_OUTPUT.PUT_LINE('TEST5=' || TEST5);    DBMS_OUTPUT.PUT_LINE('TEST6=' || TEST6);END;/

INTEGER

DECLARE  -- INTEGER 是 NUMBER 的子类型:NUMBER(38,0)  TEST1 INTEGER := 1;   -- INT 是 INTEGER 的子类型  TEST2 INT := 2;   -- SMALLINT 是 NUMBER 的子类型:NUMBER(38,0)  TEST3 SMALLINT := 3;   -- BINARY_INTEGER 是 INTEGER 的子类型,范围从 -2147483647 到 2147483647  TEST4 BINARY_INTEGER := 4;   -- PLS_INTEGER 和 BINARY_INTEGER 完全相同  TEST5 PLS_INTEGER := 5;   -- SIMPLE_INTEGER 是 BINARY_INTEGER 的子类型,不允许 NULL  TEST6 SIMPLE_INTEGER := 6;   -- NATURAL 是 BINARY_INTEGER 的子类型,范围从 0 到 2147483647  TEST7 NATURAL := 7;   -- NATURALN 是 NATURAL 的子类型,不允许 NULL  TEST8 NATURALN := 8;   -- POSITIVE 是 BINARY_INTEGER 的子类型,范围从 1 到 2147483647  TEST9 POSITIVE := 9;   -- POSITIVEN 是 POSITIVE 的子类型,不允许 NULL  TEST10 POSITIVEN := 10;   -- SIGNTYPE 是 BINARY_INTEGER 的子类型,范围从 -1 到 1  TEST11 SIGNTYPE := -1;   -- DECIMAL 是 NUMBER 的子类型:NUMBER(38,0)  TEST12 DECIMAL := 12;   -- NUMERIC 是 DECIMAL 的子类型  TEST13 NUMERIC := 13;   -- DEC 是 DECIMAL 的子类型  TEST14 DEC := 14; BEGIN      DBMS_OUTPUT.PUT_LINE('TEST1=' || TEST1);    DBMS_OUTPUT.PUT_LINE('TEST2=' || TEST2);    DBMS_OUTPUT.PUT_LINE('TEST3=' || TEST3);    DBMS_OUTPUT.PUT_LINE('TEST4=' || TEST4);    DBMS_OUTPUT.PUT_LINE('TEST5=' || TEST5);    DBMS_OUTPUT.PUT_LINE('TEST6=' || TEST6);    DBMS_OUTPUT.PUT_LINE('TEST7=' || TEST7);    DBMS_OUTPUT.PUT_LINE('TEST8=' || TEST8);    DBMS_OUTPUT.PUT_LINE('TEST9=' || TEST9);    DBMS_OUTPUT.PUT_LINE('TEST10=' || TEST10);    DBMS_OUTPUT.PUT_LINE('TEST11=' || TEST11);    DBMS_OUTPUT.PUT_LINE('TEST12=' || TEST12);    DBMS_OUTPUT.PUT_LINE('TEST13=' || TEST13);    DBMS_OUTPUT.PUT_LINE('TEST14=' || TEST14);END;/

FLOAT

DECLARE  -- FLOAT 是 NUMBER 的一个子类型: NUMBER(126)   -- Oracle 不推荐我们使用 FLOAT,推荐使用 BINARY_FLOAT 和 BINARY_DOUBLE  TEST1 FLOAT := 1.1;   -- REAL 是 FLOAT 的子类型:FLOAT(63  TEST2 REAL := 2.2;    -- DOUBLE PRECISION 是 FLOAT 的子类型  TEST3 DOUBLE PRECISION := 3.3;BEGIN      DBMS_OUTPUT.PUT_LINE('TEST1=' || TEST1);    DBMS_OUTPUT.PUT_LINE('TEST2=' || TEST2);    DBMS_OUTPUT.PUT_LINE('TEST3=' || TEST3);END;/

BINARY_FLOAT

DECLARE  -- BINARY_FLOAT 是 NUMBER 的一个子类型  TEST1 BINARY_FLOAT := 1.1;   -- SIMPLE_FLOAT 是 BINARY_FLOAT 的子类型  TEST2 SIMPLE_FLOAT := 2.2;BEGIN      DBMS_OUTPUT.PUT_LINE('TEST1=' || TEST1);    DBMS_OUTPUT.PUT_LINE('TEST2=' || TEST2);END;/

BINARY_DOUBLE

DECLARE  -- BINARY_DOUBLE 是 NUMBER 的一个子类型  TEST1 BINARY_DOUBLE := 1.1;   -- SIMPLE_DOUBLE 是 BINARY_DOUBLE 的子类型  TEST2 SIMPLE_DOUBLE := 2.2;BEGIN      DBMS_OUTPUT.PUT_LINE('TEST1=' || TEST1);    DBMS_OUTPUT.PUT_LINE('TEST2=' || TEST2);END;/

--更多参见:

-- 声明:转载请注明出处

-- Last Edited on 2015-01-01

-- Created by ShangBo on 2014-12-21

-- End

你可能感兴趣的文章
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
JVM最简生存指南
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
WAV文件解析
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
android 代码实现圆角
查看>>
flutter-解析json
查看>>
android中shader的使用
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
drat中构造方法
查看>>