number 类型, 十进制数据类型(平台无关的)

pls_integer 和 binary_integer 这两种数据类型和你底层硬件表示整数的方法完全一致, 这两种类型的运算是利用硬件原生, 机器指令执行的, 你不能再数据库中保存这些类型的值.

binary_float 和 binary_double 一般用于浮点数计算

number 类型, number(9,2)  // 注意, 这里的9是9位精度, 表示有效数字要包含2位小数, 所以这个数的最大值是 9 999 999.99

number(9,11) // .00999999999, 其中 有效数字是9个, 而小数点后边的位数是11位.

number(9, -11) // 99999999900000000000 , 这种形式尽量少用, 看着迷糊

pls_integer 类型是为了运算速度, 因为 pls_integer 是整数, 因此在移植硬件平台时不会遇到兼容性问题, 但是如果使用pls_integer时要经常和 number类型互相转换, 那还是从一开始就使用number类型更好.

binary_integer 类型, 不推荐使用

simple_integer 类型 和 pls_integer 相同的取值范围, 只是它没有溢出, 也不支持 null, 所以如果你设计的列既没有null 也不可能溢出, 那么选用这种类型会有很好的性能.

例如: 下列代码, 可以比较 procedure 运行

   1:  -- chap09_01.sql
   2:  create or replace procedure pls_test(interations in pls_integer)  -- result: 590000
   3:  as
   4:      int1    pls_integer := 1;
   5:      int2    pls_integer := 2;
   6:      begints    timestamp;
   7:      endts    timestamp;
   8:  begin
   9:      begints := systimestamp;
  10:      
  11:      for cnt IN 1 .. iterations
  12:      loop
  13:          int1 := int1 + int2 * cnt;
  14:      end loop;
  15:      
  16:      endts := systimestamp;
  17:      dbms_output.put_line( iterations
  18:                              || ' iterations had run time of:'
  19:                              || to_char(endts - begints));
  20:  end;
  21:  /
  22:   
  23:  -- chap09_02.sql
  24:  -- simple_integer 是 11g 之后才有的, 所以目前测试不了
  25:  create or replace procedure pls_test(interations in simple_integer)  -- result: 590000
  26:  as
  27:      int1    simple_integer := 1;
  28:      int2    simple_integer := 2;
  29:      begints    timestamp;
  30:      endts    timestamp;
  31:  begin
  32:      begints := systimestamp;
  33:      
  34:      for cnt IN 1 .. iterations
  35:      loop
  36:          int1 := int1 + int2 * cnt;
  37:      end loop;
  38:      
  39:      endts := systimestamp;
  40:      dbms_output.put_line( iterations
  41:                              || ' iterations had run time of:'
  42:                              || to_char(endts - begints));
  43:  end;
  44:  /

to_number 函数

to_char

cast 也是 字符串与数字之间来回转换的.

ceil  : 返回最小整数

floor : 返回 <= 指定值得最大整数, 这个整数相当于指定值的”下限”

round : 对一个数字执行4舍5入.

trunc : 把一个数字按照指定的小数位数截断.

ABS: 绝对值

SQRT: 平方根

plsql programming 09 数字的更多相关文章

  1. Day_11【集合】扩展案例4_删除长度大于5的字符串,删除元素包含0-9数字的字符串

    分析以下需求,并用代码实现 1.定义ArrayList集合,存入多个字符串 如:"ab1" "123ad" "bca" "dadf ...

  2. plsql programming 17 过程, 函数与参数

    代码模块化, 即将一大块代码拆成若干小块(过程), 然后就可以在其他模块调用这些模块了, 这样, 重用性更好, 也方便管理. 过程: 过程是一个可以像执行 PL/SQL 语句一样调用的程序, 一个过程 ...

  3. plsql programming 16 动态SQL和动态PLSQL

    动态SQL 是指在执行时才构建 SQL 语句, 相对于静态 sql 的编译时就已经构建. 动态PLSQL 是指整个PL/SQL代码块都是动态构建, 然后再编译执行的. 作用: 1. 可以支持 DDL ...

  4. plsql programming 04 条件和顺序控制

    1. 条件语句 if salary > 40000 or salary is NULL then give_bonus(employee_id, 500); end if; if conditi ...

  5. plsql programming 01 plsql概述

    授权 从 oracle 8i 开始, oracle 用通过提供 authid 子句为 pl/sql 的执行授权模型, 这样我们可以选择使用 authid current_user(调用者权限)来执行这 ...

  6. plsql programming 14 DML和事务管理

    我们可以把多个SQL语句集中在一起, 在逻辑上组成一个事务, 从而保证这些操作或者全部被保存到数据库(用sql的说法就是”提交”), 或者被整体驳回(用sql的说法是“回滚”). 事务: ACID 原 ...

  7. plsql programming 11 记录类型

    记录类型非常类似数据库表中的行. 记录作为一个整体本身并没有值, 不过每个单独成员或字段都有值, 记录提供了一种把这些值当做一组进行操作的方法. 例如: 1: -- create a table 2: ...

  8. plsql programming 13 其他数据类型

    bolean 类型 raw 类型, 用来保存和操作少量的二进制数据. urowid 和 rowid 类型, 这两种数据类型表示数据库的 rowid. 所谓 rowid 就是一个标识符-用来表示数据库中 ...

  9. plsql programming 07 使用数据

    数据类型 char, Nchar varchar2, Nvarchar2 clob, Nclob number number(9, 2);  -- 定点小数, 小数点左边7位, 右边2位 number ...

随机推荐

  1. 针对标签中设置 disabled="true",$("#id").serialize()获取不到value的解决方法

    今天给<select>增加disabled="true", 发现$("#form").serialize()的结果不包含select标签的值,解决办 ...

  2. 【FTP】org.apache.commons.net.ftp.FTPClient实现复杂的上传下载,操作目录,处理编码

    和上一份简单 上传下载一样 来,任何的方法不懂的,http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net ...

  3. webpack配置构建环境问题汇总

    环境:node 6.9.5  npm 3.10.10 问题一:Module build failed: TypeError: Path must be a string. Received undef ...

  4. linux设置定制器自动执行任务

    基本格式 :  * * * * * command  分 时 日 月 周 命令  第1列表示分钟1-59 每分钟用*或者 */1表示  第2列表示小时1-23(0表示0点)  第3列表示日期1-31  ...

  5. B3:状态模式 State

    当一个对象内在状态改变时允许改变其行为,这个对象看起来像是改变了其类.状态模式主要解决当控制一个对象状态转换条件表达式过于复杂时的情况,把状态判断逻辑移到表示不同状态的一系列类中.如果状态判断很简单, ...

  6. Django——基于类的视图源码分析 二

    源码分析 抽象类和常用视图(base.py) 这个文件包含视图的顶级抽象类(View),基于模板的工具类(TemplateResponseMixin),模板视图(TemplateView)和重定向视图 ...

  7. selenuim-webdriver注解之@FindBy、@FindBys、@FindAll的区别

    selenium-webdriver中获取页面元素的方式有很多,使用注解获取页面元素是其中一种途径, 方式有3种:@FindBy.@FindBys.@FindAll.下文对3中类型的区别和使用场景进行 ...

  8. Laravel 学习 .env文件 getenv 获得环境变量的值

    Laravel 学习 .env文件 getenv 获得环境变量的值  我们还需要对应用的 .env 文件进行设置,为应用指定数据库名称 sample. .env . . . DB_DATABASE=s ...

  9. 基于ShaderX5的顶点动画

    关于顶点动画,ShaderX5里有篇专门来讲,在虚幻3引擎里也有一个更加丰富的实现.使用了一个Pivot Painter的3dmax脚本.其实自己灵活用vertex color可以避开使用Pivot ...

  10. jmeter测试TCP服务器/模拟发送TCP请求 设置16进制发送(转)

    转载留存:http://blog.sina.com.cn/s/blog_46d0362d0102v8ii.html 性能测试需要模拟多种场景,经常受制于资源限制,没办法建立贴近实际部署环境的场景.因而 ...