精华内容
下载资源
问答
  • oracle数据类型

    千次阅读 2018-11-08 20:20:39
    oracle数据类型

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

     

     

    oracle数据类型 

     

     

    有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据类型集解,相信读者阅读了本文以后,Oracle数据库开发起来会事半功倍!


    在Oracle数据库中,每个关系表都由许多列组成。给每一列指派特定的数据类型来定义将在这个列中存储得数据类型。

    1、CHAR
    最多可以以固定长度的格式存储2000个字符或字节。默认指定为以字符形式进行存储,这个数据类型是固定长度的,并且当位数不够时,需要在其右边添加空格来补满。

    例如:
    CREATE TABLE test
    (name char(20))

    2、VARCHAR和VARCHAR2
    最多可以以可变长度来存储4000B,因此不需要空格来作补充。VARCHAR2 比 VARCHAR 更适合使用,由于兼容性的原因,所以仍然在 Oracle 数据库中保留着 VARCHAR 。

    例如:
    CREATE TABLE test
    (name varchar2(20))

    3、NCHAR
    NLS(national language support , 国际语言支持)的数据类型仅可以存储由数据库 NLS 字符集定义的 Unicode 字符集。该数据类型最多可以存储2000B。NCHAR 的列在位数不够时需要在右边填充空格。例如:
    CREATE TABLE test
    (name Nchar(20))
    注意:在 Oracle9i 数据库及其更新的版本中,仅使用 Unicode 数据类型

    4、NVARCHAR2
    NLS 的数据类型与 VARCHAR2 数据类型等价。这个数据类型最多可存储4000B 。例如:
    CREATE TABLE test
    (name Nvarchar2(20))
    注意:在 Oracle9i 数据库及其更新的版本中,仅使用 Unicode 数据类型

    5、NUMBER
    用于存储零、正数、定长负数以及浮点数。NUMBER 数据类型可以以 NUMBER(P,S)的

    形式来定义数字的精度和范围。 这里:p 表示精度 (1-38),它表示存储在列中数

    字的总长度是 p 位: s 表示范围,它表示小数点后的位数。该取值范围可以从-84 到 127 。例如:
    CREATE TABLE test
    (name number(5))
    使用精度 5 来定义一个正数(如 12345)。
    CREATE TABLE test
    (name number(5,2))
    使用精度 5 和范围 2 来定义一个数字。符合这种数据类型的数字值如 123.45 和 12.34

    6、LONG
    LONG 类型的列存储可变长度的字符串,最多可以存储 2GB 的数据。LONG 类型的列有很多在 VARCHAR2 类型列中所具有的特征。可以使用 LONG 类型的列来存储 LONG 类型的文本字符串。LONG 数据类型的使用是为了向前兼容的需要。建议使用 LOB 数据类型来代替 LONG 类型。例如:
    CREATE TABLE test
    (name long)

    7、DATE
    用于在数据库中存储日期和时间。存储时间的精度可以达到 1/100s。不提供时区的相关信息。例如:
    CREATE TABLE test
    (name DATE)

    8、TIMESTAMP
    使用年、月、日、小时、分钟、秒域来对日期/时间提供更详细的支持。最多可以使用 9 位数字的精度来存储秒(受底层操作系统支持的限制)。这个数据类型没有时区的相关信息,它可以在 Oracle9i 数据库及其更新的版本中使用。例如:
    CREATE TABLE test
    (timestamp_column TIMESTAMP);

    9、TIMESTAMP WITH TIME ZONE
    包含 TIMESTAMP 数据类型中的所有域,除此之外,还包含两个额外的域:timezone_hour 和 timezone_minute。这个数据类型包含支持时区的相关信息。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
    CREATE TABLE test
    (timestamp_column
    TIMESTAMP WITH
    TIME ZONE);

    10、TIMESTAMP WITH LOCAL TIME ZONE
    除了在数据库中存储的时区采用标准化以外,所包含的其他域与 TIMESTAMP 数据类型中的域相同。当选择列时,将日期/时间标准为会话的时区。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如
    CREATE TABLE test
    (timestamp_column
    TIMESTAMP WITH
    LOCAL TIME ZONE);

    11、INTERVAL YEAR TO MONTH
    用于存储一个时间段,由月份和年组成。需要 5B 来存储。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
    SELECT INTERVAL
    '01-05'
    YEAR TO MONTH -
    INTERVAL '01-02' YEAR
    TO MONTH FROM dual;

    12、INTERVAL DAY TO SECOND
    用于存储一个时间段,由日和秒组成。需要 11B 来存储。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
    SELECT INTERVAL
    '100 10:20:42.22'
    DAY(3) TO SECOND(2) -
    INTERVAL
    '101 10:20:42.22'
    DAY(3) TO SECOND(2)
    FROM dual;

    13、RAW
    用于存储 raw 类型的二进制数据。最多可以存储 2000B。建议使用 BLOB 来代替它。例如:
    CREATE TABLE test
    (raw_column
    RAW(2000));

    14、LONG RAW
    用于存储 raw 类型的二进制数据。最多可以存储 2GB 的数据。建议使用BLOB来代替它。例如:
    CREATE TABLE test
    (raw_column LONG RAW);

    15、ROWID
    表中 ROWID 类型的字符串表示。使用这个数据类型来存储由 ROWID 类型伪列的返回值。例如:
    CREATE TABLE test
    (rowid_column ROWID);

    16、UROWID
    在索引组织表中表示逻辑行地址。例如:
    CREATE TABLE test
    (urowid_column UROWID);

    17、CLOB
    用于存储基于字符的大对象。在 Oracle9i 数据库中最多可以存储 4GB 的数据,这比 Oracle10g 数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据块大小)。例如:
    CREATE TABLE test
    (clob_column CLOB);

    18、NCLOB
    可以使用由数据库国际字符集所定义的字符集来存储仅为 Unicode 类型的基于字符的数据。最多可以存储 4GB 的数据,这比 Oracle10g 数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据块大小)。例如:
    CREATE TABLE test
    (nclob_column NCLOB);

    19、BLOB
    最多可以存储 4GB 数据的二进制大对象,这比 Oracle10g数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据库块大小)。例如:
    CREATE TABLE test
    (blob_column BLOB);

    20、BFILE
    存储指向数据库外部文件的定位符。外部文件最大为 4GB。例如:
    CREATE TABLE test
    (bfile_column BFILE);

    21、BINARY_FLOAT
    该数据类型是一个基于 ANSI_IEEE745 标准的浮点数据类型。它定义了一个 32 位的双精度浮点数。这个数据类型需要 5B 的存储空间。例如:
    CREATE TABLE test
    (b_float BINARY_FLOAT);

    22、BINARY_DOUBLE
    该数据类型是一个基于 ANSI_IEEE745 标准的双精度浮点数据类型,它定义了一个32位的双精度浮点数。这个数据类型需要 9B 节的存储空间。例如:
    CREATE TABLE test
    (b_float BINARY_DOUBLE);


    关于各种数据类型的注释

    1、关于 CHAR 和 VARCHAR2 数据类型的注释
    由数据库字符集来确定特定的 CHAR、VARCHAR 或者 VARCHAR2 字符类型所占的字节数。多字节字符集中的字符可以存储 1~4B。CHAR 或 VARCHAR2 数据类型的大小由该数据类型可以存储的字节数或字符数来决定(这成为字符的语义)。所有定义的存储大小都是默认以字节为单位的。如果使用多字节字符集(大部分常见的西方字符集都是以单字节为单位的,而值得注意的是,有一个例外就是 UTF 字符集不是以单字节为单位的),则可能需要定义以字符为单位的存储,下面的例子说明了这个问题:

    CREATE TABLE test
    (name VARCHAR2(20 char));

    建议在表的末尾处创建一些值为 NULL 的列。通过使用这种方法,可以用 VARCHAR2 数据类型来存储一些数据,但不能使用 CHAR 数据类型来存储数据,因为 Oracle 数据库是以在一行中连续存储多个 NULL 值的方式来进行存储的。

    Oracle9i 数据库及其更新的版本提供数据压缩功能,该功能仅在包含于只读表空间中的表中使用(也就是说,表中的数据将不会改变)。仅当通过下面的批量装载(bulk-load)操作中的任意一种操作将数据装载进表中时,才会执行数据压缩操作


    使用 create table as select(CTAS)操作来创建表。
    在直接模式下的 insert 操作或者并行的 insert 操作。
    SQL*Loader 装载程序在直接模式下的操作。

    注意:
    如果使用 update 语句对数据进行了修改,则已经压缩过的数据块将不会再次压缩!因此,一张很小的表可以快速地增长成一张很大的表。通过使用 alter table move 命令可以在已经存在的表中压缩数据。下面是创建压缩表的例子和对已经存在的表进行压缩的例子:

    CREATE TABLE my_tab (id NUMBER,current_value VARCHAR2(2000)) COMPRESS;
    ALTER TABLE my_comp_tab MOVE COMPRESS;

    关于 CHAR 和 VARCHAR2 数据类型,常常会有这样一个问题:到底是用哪一个数据类型最好?下面是对这个问题的一些指导性建议:
    通常 VARCHAR2 数据类型比 CHAR 数据类型优先使用。
    如果数据大小是变化的则在数据库中使用 VARCHAR2 数据类型可以节省空间。
    如果 VARCHAR2 数据类型列中的数据需要频繁更新,则 VARCHAR2 数据类型列的扩展可能会导致行连接或者行迁移的发生。当最终需要使用 VARCHAR2 数据类型列总大小的时候,可以考虑使用 CHAR 数据类型来代替 VARCHAR2 数据类型。

    注意:
    通常来说,使用 VARCHAR2(1)数据类型比使用 CHAR(1)数据类型开销要大,但上面所讲的则是例外。

    2、关于 NUMBER 数据类型的注释
    NUMBER 数据类型内部使用科学计数法以可变长度格式来存储数据。使用 1B 存储指数,而另外 20B(这个字节数可以变化)用于存储该数字剩下的部分。这种存储模式使得 NUMBER 数据类型可以表示的精度为 38 位。

    如果想要确定给定的数字所占字节数的大小,可以使用 vsize 函数,如下所示:

    SQL>SELECT VSIZE(100) FROM dual;
    VSIZE(100)
    ----------
     2

    在上面的例子中,该 vsize 函数用于将数字的大小指定为100.使用 2B 存储。1B 存储数字,另 1B存储指数。
    也可以使用 dump 函数来确定任意列的具体大小,如下所示:
    SQL>SELECT id,dump(id) did FROM test;
     ID DID
    -----------------------------
     123 Typ=2 Len=3: 194,2,24
     141 Typ=2 Len=3: 194,2,42
         123456 Typ=2 Len=4: 195,13,35,57

    NUMBER 数据类型可以有若干种形式来定义。可以根据需要使用或禁用精度和范围的方式来定义 NUMBER 数据类型。如果使用特定的精度来定义 NUMBER 列,则当超过所定义的精度时,Oracle 数据库将会产生错误。例如,NUMBER(6,2) 在存储数字 1234.56 时,不会对该数字的值产生任何影响,而在存储数字 123.456 时将会对该数字进行四舍五入,最终存储的数字将变成 123.46;如果以相同的 NUMBER 数据类型来存储数字 12345.67 时,数据库将产生错误,因为该数字的精度是 7 而不是 6.

    最后需要注意的是,也可以将列定义为没有精度的 NUMBER 数据类型,这表明将把

    NUMBER 数据类型的列作为没有范围属性的整数来看待。

    3、关于 LONG RAW 数据类型的注释

    LONG RAW 数据类型用于存储数据库无法解释的二进制数据。这个数据类型最多能够存储 2GB 的数据并且它的存储容量是可变的。Oracle 数据库不鼓励使用 LONG RAW 数据类型,因为该数据类型已经由 BLOB 数据类型所代替了。Oracle 数据库

    (Oracle9i数据库及其更新的版本)已经提供了通过 alter table 命令将 LONG RAW 数据类型列转换到相应的 CLOB 数据类型的能力。也可以使用 to_lob 函数将 LONG RAW 数据格式转换为 BLOB 数据格式。

    4、关于 LONG 数据类型的注释

    LONG 数据类型用于存储大量的字符文本。LONG 数据类型会受到某些存储的限制,最多可以存储 2GB 的数据。Oracle 数据库不鼓励使用 LONG 数据类型,因为这个数据类型已经由 CLOB 数据类型所代替了。Oracle数据库(Oracle9i 数据库及其更新的版本)已经提供了通过 alter table 命令将 LONG 数据类型列转换到相应的 LOB 数据类型的能力。也可以使用 to_lob 函数将 LONG 数据格式转换成 CLOB 数据格式。
    在下面的 SQL 语句类型中可以引用 LONG 数据类型列:
    * select 列表
    * 在 update 语句的 set 子句中
    * 在 insert 语句的 values 子句中使用 LONG 数据类型将会受到许多的限制;
    * 在每个表中只允许使用一个 LONG 数据类型的列。
    * 不能使用 LONG 数据类型的属性创建对象类型。
    * Oracle 数据库的 where 子句或者完整性约束不能引用 LONG 数据类型,仅有一种例外的情况,就是 LONG 数据类型可以出现在 NULL 和 NOT NULL 约束中,或者可以作为 NULL 或者 NOT NULL 的 where 子句谓语的一部分。
    * 不能索引 LONG 数据类型的列。
    * 不能对包含 LONG 数据类型的列进行分布操作。所有包含 LONG 数据类型列的事务

    必须在同一个数据库中协同工作。
    * 复制不支持 LONG 数据类型。
    * 如果所创建的表有 LONG 和 CLOB 两种数据类型的列,则在同一 SQL 语句中,同时绑定到 LONG 和 CLOB 数据类型列上的数据不能超过 4000B。但是可以将超过 4000B 的数据单独绑定到 LONG 数据类型或者 CLOB 数据类型列上。
    除了前面所讲的约束外,当 LONG 数据类型出现在 SQL 语句中时,还有另一些关于 LONG 数据类型列的约束。首先需要注意的是,下面的操作不支持 LONG 数据类型列:

    * group by
    * order by
    * connect by
    * distinct
    * unique
    * 任何 SQL 的内建函数、表达式或者条件
    * 任何 select 语句(在该语句中,union、intersect 或者 minus 操作将查询或者子查询结合起来)
    也会存在关于 LONG 数据类型的 DDL 约束,如下所示:
    * 在 create cluster 语句的表列中不能包含 LONG 数据类型列。
    * 在 alter table ...move 语句中不能包含 LONG 数据类型列。
    * 在 create table as select 语句的选择列表中不能包含 LONG 数据类型列。

    在PL/SQL 程序单元和触发器中使用 LONG 数据类型列时,同样也存在一些约束,如下所示:
    * 不能使用 LONG 数据类型表示触发器中的变量。
    * 触发器变量 :new 和 :old 的数据类型不能是 LONG 数据类型列。
    * PL/SQL 存储函数不能返回 LONG 数据类型,但是 PL/SQL 程序中的变量或参数可以使用 LONG 数据类型,不过不能从 SQL 语句中调用这种 PL/SQL 程序单元。

    5、关于 DATE 数据类型的注释

    DATE 数据类型是 Oracle 数据库中自带的一种用于存储日期和时间的方法。当 DATE 数据类型存储在数据库中的时候,这个数据类型占据 7B 的内部存储空间。这些字节分别用来存储世纪、年、月、日、小时、分和秒的详细信息。
    默认的显示格式为 dd-mon-yy,它表示日、月以及两位数的年,由破折号(-)将其分离。例如默认格式为:01-FEB-01。如果要重新定义日期格式,可以在数据库参数文件中设置 nls_date_format 变量。如果要改变日期的格式,也可以为特定的会话使

    用 alter session 命令设置 nls_date_format 变量的值。如下所示:
    SQL>SELECT sysdate FROM dual;
    SYSDATE
    ---------
    24-MAY-03
    SQL>ALTER SESSION SET nls_date_format='mm/dd/yyyy hh24:mi:ss';
    Session altered.
    SQL>SELECT sysdate FROM dual;
    SYSDATE
    --------------------
    06/25/2009 16:49:09

    在上面的例子中,将日期格式的时间标志改变为 24 小时制格式的时间,并且在年的前面加上了世纪值。
    如果想要在特定系统的所有会话中使用不同的日期格式,可以设置 NLS_LANG 操作系统的环境变量,并且同时将 NLS_DATE_FORMAT 作为操作系统环境变量进行设置。这将使得每一次登录系统时,会发出 alter session 命令。需要注意的是,只有当同时设置了环境变量 NLS_LANG 时,环境变量 NLS_DATE_FORMATE 才会生效。

    注意:
    如果使用 RMAN(Oracle Recovery Manager,Oracle 恢复管理),则显示的左右日期格式都将是默认的日期格式。应该在启动 RMAN 之前设置 NLS_LANG 和 NLS_DATE_FORMAT 环境变量以设定所需要的日期格式。

    在 SQL 语句中为了改变输出的格式,需要使用 Oracle 数据库的内建函数 to_char。如果有基于字符的日期要插入到 DATE 数据类型列中,则需要使用 to_date 函数。关于 to_char 函数转换日期格式的例子如下所示:
    SQL>SELECT to_char(sysdate,'mm/dd/yyyy hh24:mi:ss') the_date FROM dual;
     THE_DATE
    -----------------
    06/25/2009 17:05:36

    在上面的例子中,将日期格式转化为由四位数表示的年以及 24 小时制、分钟、秒表示的时间格式。

    6、关于 TIMESTAMP 和 INTERVAL 数据类型的注释

    某些新的 TIMESTAMP 数据类型的值依赖于数据库中适当的时区设置。数据库的时区默认为当前操作系统的时区。在数据库创建的时候,可以通过在 create database 命令中使用 set time_zone 参数为数据库设置不同的时区。也可以通过使用 alter database set time_zone 命令改变已经存在的数据库时区。使用 alter session 命令可以在会话级上修改时区设置。可以定义基于UTC(Universal Time Coordinated,协调世界时)小时偏移的时区,或者使用一个指定的时区,如 CST 或 EST。下面是设置数据库时区的例子:
    ALTER DATABASE SET time_zone='CST';
    ALTER DATABASE SET time_zone='-05:00';

    一些转换函数可以用于 TIMESTAMP 和 INTERVAL 数据类型。这些函数包括 to_data、to_char、to_timestamp_tz、to_yminterval 和 to_dsinterval,同时 nls_timestamp_format 参数和 nls_timestamp_tz_format 参数也与 TIMESTAMP 和 INTERVAL 数据类型有一些特定的关联。
    当从 TIMESTAMP 数据类型列中获取数据时,可以使用其他的内建函数。extract 函数可以从 TIMESTAMP 数据类型列中获取特定的信息,如小时或者分钟的信息。如下所示(注意,从 sysdate 函数到 TIMESTAMP 数据类型格式的隐式转换):
    CREATE TABLE my_tab(test_col TIMESTAMP);
    INSERT INTO my_tab VALUES (sysdate);
    SELECT test_col,EXTRACT(HOUR FROM test_col) FROM my_tab;
    TEST_COL           HOUR
    -------------------------------------
    25-JUNE -09 05.18.50.000000 PM     9

     


    参考文献:【美】夫雷曼(Freeman.R.G.)《Oracle + DBA 必备技能详解》
    关于《Oracle + DBA 必备技能详解》中译本,作者有一本影印版的PDF格式的,40M大小,已经上传至作者 CSDN 资源共享给大家,有兴趣的朋友可以去看看,下载地址:http://download.csdn.net/source/1410669

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block var foo = 'bar'; 

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目Value
    电脑$1600
    手机$12
    导管$1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列第二列第三列
    第一列文本居中第二列文本居右第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPEASCIIHTML
    Single backticks'Isn't this fun?'‘Isn’t this fun?’
    Quotes"Isn't this fun?"“Isn’t this fun?”
    Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to- HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

    Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    gantt
            dateFormat  YYYY-MM-DD
            title Adding GANTT diagram functionality to mermaid
            section 现有任务
            已完成               :done,    des1, 2014-01-06,2014-01-08
            进行中               :active,  des2, 2014-01-09, 3d
            计划一               :         des3, after des2, 5d
            计划二               :         des4, after des3, 5d
    
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

    张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • Oracle数据类型

    千次阅读 2017-04-23 17:17:30
    数据类型本质上是一种用于描述数据存储的内存结构,用它来决定变量中所存储数据的类型。 1、基本数据类型 与其他编程语言一样,PL/SQL语言也是有多中数据类型,这些数据类型能够满足在编写PL/SQL程序过程中定义变量...

    数据类型本质上是一种用于描述数据存储的内存结构,用它来决定变量中所存储数据的类型。

    1、基本数据类型

    与其他编程语言一样,PL/SQL语言也是有多中数据类型,这些数据类型能够满足在编写PL/SQL程序过程中定义变量和常量。

    1.1 数值类型

    数值类型主要包括NUMBER、PLS_INTEGER、BINARY_INTEGER这3中基本类型。其中,NUMBER类型的变量可以存储整数或者浮点数;而PLS_INTEGER、BINARY_INTEGER类型的变量只存储整数。

    NUMBER类型还可以通过NUMBER(P,S)的形式来格式化数字,其中,参数P表示精度,参数S表示刻度范围。

    【实例】声明一个精度为9,且刻度范围为2的表示金额的变量Num_Money。

    declare
        Num_Money NUMBER(9,2);
    begin
        Num_Money := 18.128;
        DBMS_OUTPUT.PUT_LINE('价格为:'||Num_Money);   --输出:价格为:18.13     
    end;

    1.2 字符类型

    字符类型主要包括VARCHAR2、CHAR、LONG、NCHAR和NVARCHAR2等。这些类型。

    (1)VARCHAR2类型:用于存储可变长度的字符串,其语法格式VARCHAR2(maxlength),参数maxlength的最大值可以是32767字节。

    注意:数据库类型的VARCHAR2的最大长度是4000字节,所以一个长度大于4000字节的PL/SQL类型VARCHAR2变量不可以赋值给数据库中的一个VARCHAR2变量,而只能赋值给LONG类型的数据库变量。

    (2)CHAR类型:CHAR类型表示指定长度的字符串,其语法格式CHAR(maxlength)。

    (3)LONG类型:LONG类型表示一个可变的字符串,最大长度是32767字节,而数据库类型的LONG最大长度可达2GB,所以任何字符串变量都可以赋值给它(LONG类型不建议使用,而建议使用CLOB)。

    (4)NCHAR和NVARCHAR2类型:这两种数据类型的长度要根据国字符集来确定,只能具体情况具体分析。

    1.3 日期类型

    日期类型只有一种——DATE类型,用来存储日期和时间信息,DATE类型的存储空间是7个字节,分别使用一个字节存储世纪、年、月、天、小时、分钟和秒。

    1.4 布尔类型

    布尔类型也是只有一种——BOOLEAN类型,只要用于存储的流程控制和业务逻辑判断,其变量值可以是TRUE、FALSE或NULL中的一种。

     

    2、特殊数据类型

    为了提高用户的编程效率和解决复杂的业务逻辑需求,PL/SQL语言除了可以使用Oracle规定的基础数据类型外,还提供了3种特殊的数据类型,但这3种类型仍然是建立在基本数据类型基础之上的。

    2.1 %TYPE类型

    使用%TYPE关键字可以声明一个与指定列名称相同的数据类型,它通常紧跟在指定列名的后面。

    【实例】声明一个与emp表中job列的数据类型完全相同的变量var_job,代码如下。

    declare
        var_job emp.job%type;

    【实例】在SCOTT模式下,使用%TYPE类型的变量输出emp表中编号为7369的员工名称和职务信息,代码如下。

    declare
        var_ename emp.ename%type;    --声明与ename列类型相同的变量
        var_job emp.job%type;        --声明与job列类型相同的变量
    begin
      select ename,job
      into var_ename,var_job
      from emp
      where empno=7369;              --检索数据,并保存在变量中
      dbms_output.put_line(var_ename||'的职务是'||var_job);
    end;

    2.2 RECORD类型

    单词RECORD有“记录”之意,因此RECORD类型也称作“记录类型”,使用该类型的变量可以存储由多个列值组成的一行数据。在声明记录类型变量之前,首先需要定义记录类型,然后才可以声明记录类型的变量。记录类型是一种结构化的数据类型,它使用type语句进行定义,在记录类型的定义结构中包含成员变量及其数据类型,其语法格式如下:

    type record_type is record
    (
    	var_member1 data_type [not null] [:=default_value],
    	…
    	var_membern data_type [not null] [:=default_value]
    )
    

    record_type:表示要定义的记录类型名称。

    var_member1:表示该记录类型的成员变量名称。

    data_type:表示成员变量的数据类型。

    【实例】声明一个记录类型emp_type,然后使用该类型的变量存储emp表中的一条信息,并输出这条记录信息,代码如下。

    declare
      type emp_type is record           --声明record类型emp_type
      (
           var_ename emp.ename%type,    --定义字段/成员变量
           var_job emp.job%type,
           var_sal emp.sal%type
      );
      empinfo emp_type;                 --定义变量
    begin
      select ename,job,sal
      into empinfo
      from emp
      where empno = 7369;
      /*输出雇员信息*/
      dbms_output.put_line('雇员名称:'||empinfo.var_ename||' 职务:'||empinfo.var_job||' 工资:'||empinfo.var_sal);
    end;

    2.3 %ROWTYPE类型

    %ROWTYPE类型的变量结合了%TYPE类型和RECORD类型变量的优点,它可以根据数据表中行的结构定义一种特殊的数据类型,用来存储从数据表中检索到的一行数据。它的语法形式很简单,如下所示:

    rowVar_name table_name%rowtype;

    rowVar_name:表示可以存储一行数据的变量名。

    table_name:指定的表明。

    【实例】声明一个%ROWTYPE类型的变量rowVar_emp,然后使用该变量存储emp表中的一行数据,代码如下。

    declare
      rowVar_emp emp%rowtype;   --定义能够存储emp表中一行数据的变量rowVar_emp
    begin
      select * 
      into rowVar_emp
      from emp
      where empno=7369;
      /*输出雇员信息*/
      dbms_output.put_line('雇员名称:'||rowVar_emp.ename||' 职务:'||rowVar_emp.job||' 工资:'||rowVar_emp.sal);
    end;

     

    展开全文
  • Oracle – Oracle数据类型

    千次阅读 2011-06-21 15:21:00
    Oracle – Oracle数据类型Oracle数据库核心是表,表中列使用的数据类型如下:数据类型含义CHAR(length)存储固定长度的字符串,length表示字符串长度。如果实际存储的字符串长度小于length,则用空格填充。默认长度为...

    Oracle – Oracle数据类型

    Oracle数据库核心是表,表中列使用的数据类型如下:

    数据类型

    含义

    CHAR(length)

    存储固定长度的字符串length表示字符串长度。如果实际存储的字符串长度小于length,则用空格填充

    默认长度为1最大长度不超过2000字节

    VARCHAR(length)

    存储可变长度字符串length表示字符串最大长度。默认长度为1最大长度不超过4000字节

    VARCHAR2VARCHAR更适合使用,考虑向后兼容应该使用VARCHAR2

    适用于长度不固定的,不含中文的情况

    VARCHAR2(length)

    VARCHAR2基本上等同于VARCHAR,它是Oracle自己定义的一个非工业标准,不同在于VARCHAR2null代替VARCHAR的空字符串

    NCHAR(length)

    NLS(national language support 国际语言支持)的数据类型仅可以存储由数据库NLS字符集定义的 Unicode 字符集。

    存储固定长度的字符串length表示字符串长度。如果实际存储的字符串长度小于length,则用空格填充

    默认长度为1最大长度不超过2000字节

    NVARCHAR(length)

    类似VARCHAR类型。

    NVARCHAR适用于存放中文 

    NVARCHAR2(length)

    类似VARCHAR2类型

    NVARCHAR2适用于存放中文。

    NUMBER(p, s)

        用于存储零、正数、定长负数以及浮点数。p表示数字的最大位数(如果是小数,则包括整数部分、小数部分和小数点,默认为38)

    LONG

    LONG 类型的列存储可变长度的字符串,最多可以存储2GB的数据。LONG类型的列有很多在VARCHAR2 类型列中所具有的特征。可以使用LONG类型的列来存储LONG类型的文本字符串。LONG数据类型的使用是为了向前兼容的需要。

    建议使用LOB 数据类型来代替LONG 类型

    DATE

        存储日期和时间,存储纪元、4位年、月、日、时、分、秒。存储时间的精度可以达到 1/100s存储时间从公元前471211日到公元后47121231

    TIMESTAMP

        使用年、月、日、小时、分钟、秒域来对日期/时间提供更详细的支持。最多可以使用9位数字的精度来存储秒(受底层操作系统支持的限制)。这个数据类型没有时区的相关信息,它可以在 Oracle9i 数据库及其更新的版本中使用。

    TIMESTAMP WITH TIME ZONE

    包含TIMESTAMP 数据类型中的所有域,除此之外,还包含两个额外的域:timezone_hour timezone_minute。这个数据类型包含支持时区的相关信息。这个数据类型可以在Oracle9i数据库及其更新的版本中使用。

    TIMESTAMP WITH LOCAL TIME ZONE

    除了在数据库中存储的时区采用标准化以外,所包含的其他域与TIMESTAMP数据类型中的域相同。当选择列时,将日期/时间标准为会话的时区。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。

    INTERVAL YEAR TO MONTH

    用于存储一个时间段,由月份和年组成。需要5B来存储。这个数据类型可以在Oracle9i数据库及其更新的版本中使用。

    INTERVAL DAY TO SECOND

    用于存储一个时间段,由日和秒组成。需要11B来存储。这个数据类型可以在Oracle9i数据库及其更新的版本中使用。

    RAW

    用于存储raw类型的二进制数据。最多可以存储 2000B

    建议使用 BLOB 来代替它

    LONG RAW

    用于存储raw类型的二进制数据。最多可以存储 2GB的数据。

    建议使用BLOB来代替它

    ROWID

    表中 ROWID 类型的字符串表示。

    UROWID

    在索引组织表中表示逻辑行地址。

    CLOB

    用于存储基于字符的大对象。在 Oracle9i 数据库中最多可以存储4GB的数据

    NCLOB

    可以使用由数据库国际字符集所定义的字符集来存储仅为Unicode类型的基于字符的数据。最多可以存储 4GB 的数据。

    BLOB

    用于存储基于二进制的大对象,最多可以存储4GB数据的二进制大对象

    BFILE

    存储指向数据库外部文件的定位符。外部文件最大为4GB

    BINARY_FLOAT

    该数据类型是一个基于ANSI_IEEE745标准的浮点数据类型。它定义了一个32位的双精度浮点数。这个数据类型需要5B的存储空间。

    BINARY_DOUBLE

    该数据类型是一个基于ANSI_IEEE745标准的双精度浮点数据类型,它定义了一个32位的双精度浮点数。这个数据类型需要9B节的存储空间。

     

    展开全文
  • oracle date,timestamp,interval数据类型的详细讲解。
  • MySQL与Oracle数据类型对比

    千次阅读 2018-11-07 17:18:01
    MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据类型的对应关系。 一、常见数据...

    MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据类型的对应关系。

    一、常见数据类型在MySQL与Oracle数据库中的表现形式

     

    说明

    mysql

    oracle

    变长字符串

    VARCHAR[0-65535]

    定义长度默认按字符长度计算,如果是GBK编码的汉字将占用2个字节

    VARCHAR2[1-4000]
    VARCHAR是VARCHAR2的同义词

    定义默认按字节长度计算

    整数

    TINYINT(-128-127)

    SMALLINT(-32768-32767)

    MEDIUMINT(-8388608-8388607)

    INT(-2147483648-2147483647)
    BIGINT(-9223372036854775808-9223372036854775807) 

    无专用类型,

    TINYINT可以用NUMBER(3,0)代替

    SMALLINT可以用NUMBER(5,0)代替

    MEDUIMINT可以用NUMBER(7,0)代替
     

    INT可以用NUMBER(10,0)代替
     

    BIGINT可以用NUMBER(20,0)代替


     

    ORACLE中有SMALLINT,INT,INTEGER类型,不过这是NUMBER(38,0)的同义词

    数值类型

    DECIMAL[1-65[,0-30]]
    NUMERIC是DECIMAL的同义词

    NUMBER 可表示数范围: 1*10^-130至1*10^126

    NUMBER([1-38][,-84-127])

     

    DECIMAL、NUMERIC、DEC是NUMBER的同义词

    浮点型

    FLOAT(D,M)

    oracle10g开始增加BINARY_FLOAT类型

    10g以前无专用类型,可以用NUMBER代替

    ORACLE中有FLOAT和REAL类型,不过这是NUMBER的同义词

    双精度浮点型

    DOUBLE(D,M)

    oracle10g开始增加BINARY_DOUBLE类型

    10g以前无专用类型,可以用NUMBER代替

    ORACLE中有DOUBLE PRECISION类型,不过这是NUMBER的同义词

    位类型

    BIT(1-64)

    日期类型

    DATE,3字节存储,只存储日期,没有时间,支持范围是[1000-01-01]至[9999-12-31]
    TIME,3字节存储,只存储时间,没有日期,支持范围是[-838:59:59]至[838:59:59]
    DATETIME,占8字节存储,可表示日期和时间,支持范围是[1000-01-01 00:00:00]至[9999-12-31 23:59:59]
    TIMESTAMP,占4字节存储,可表示日期和时间,范围是[1970-01-01 00:00:00]至[2038-01-19 03:14:07]

    DATE类型
    7字节存储,可表示日期和时间,支持范围是[-4712-01-01 00:00:00]至[9999-12-31 23:59:59]

    高精度日期

    5.6.4以前不支持小数秒精度
    5.6.4开始TIME,DATETIME,TIMESTAMP支持,最多可以6位小数秒,也就是微秒级别

    TIMESTAMP[0-9]
    占用空间7-11个字节,当小数秒精度为0时与DATE类型相同,小数秒最高精度可达9位,也就是纳精度

    年份

    YEAR,1字节存储,只存储年份,支持范围是[1901]至[2155]

    无对应类型,可以用NUMBER(3,0)代替

    定长字符串

    CHAR[0-255],定义长度默认按字符长度计算,最大保存255字符

    CHAR[1-2000]

    定义默认按字节长度计算

    无符号说明

    支持,用于数值类型

    不支持

    大字符串,一般用于存储文本文件或超大描述及备注类信息

    TINYTEXT 最大支持255个字节
    TEXT最大支持65535个字节
    MEDIUMTEXT最大支持16MB个字节
    LONGTEXT最大支持4GB字节

    字段不支持默认值

    支持(CLOB)
    oracle10g以前最大支持4GB个字节

    oracle10g开始最大支持4GB个数据块,数据块大小为2KB-32KB

    oracle还有一个LONG类型,是早期的存储大字符串类型,最大支持2GB字节,现已不推荐使用

    二进制对象,一般用于存储文件或图片数据

    TINYBLOB 最大支持255个字节
    BLOB最大支持65535个字节
    MEDIUMBLOB最大支持16MB个字节

    LONGBLOB最大支持4GB字节

     

    字段不支持默认值

    支持(BLOB)

    oracle10g以前最大支持4GB个字节
     

    oracle10g开始最大支持4G个数据块,数据块大小为2KB-32KB

    oracle还有一个LONG RAW类型,是早期的存储二进制类型,最大支持2GB字节,现已不推荐使用

    二进制信息

    BINARY(0-255),定长
    VARBINARY(0-65535),变长

    RAW(1-2000)

    枚举类型

    ENUM(v1,v2,v3,...),最多65535个元素

    不支持

    集合类型

    SET(v1,v2,v3,...),最多64个元素

    不支持

    国际化字符集类型,较少使用

    无,MYSQL可以对每个字段指定字符编码

    支持
    NCHAR(1-2000)
    NVARCHAR(1-4000)
    NCLOB

    外部文件指针类型

    不支持

    支持
    文件大小最大4GB
    文件名称最长255字符

     

    不支持

    支持

     

    不支持

    支持

    自动增长类型

    支持
    使用简单

    不支持
    一般使用SEQUENCE解决,用法与自增类型差别较大,使用较复杂,但能实现非常灵活的应用,包括字符自增主键、全局主键等等

     

    不支持函数和表达式
    TEXT和BLOB字段类型不支持默认值

    支持函数和表达式

     

    支持,例如,把emp表的id字段顺序放在name字段后面:
    alter table emp modify column id varchar(20) after name;

    不支持,只能重建表或字段

    虚拟字段是一个逻辑字段定义,其结果值通常是一个表达式,并在表中存储物理值,不占用空间,主要用于简化查询逻辑。比如有一个商品销售表有单价和数量两个字段,那可以建一个虚拟字段金额,其表达式=单价*数量

    不支持

    11g支持,例:
    create table sales
    (
      id       number,
      quantity number,
      price    number,
      amount   GENERATED always as (quantity*price) virtual
    );

     

    INNODB 最大1000个字段
    所有字段总定义长度不能超过65535字节
    所有固定长度字段的总长度不超过半个数据块大小(数据块大小一般为16K)

    最大1000个字段

     

    二、MySQL与Oracle数据库常见数据类型对应关系

     

    编号ORACLEMYSQL注释
    1NUMBERint / DECIMALDECIMAL就是NUMBER(10,2)这样的结构INT就是是NUMBER(10),表示整型;
    MYSQL有很多类int型,tinyint mediumint bigint等,不同的int宽度不一样
    2Varchar2(n)varchar(n) 
    3DateDATATIME日期字段的处理
    MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为 SYSDATE, 精确到秒,或者用字符串转换成日期型函数TO_DATE(‘2001-08-01','YYYY-MM-DD')年-月-日 24小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.日期型字段转换成字符串函数TO_CHAR(‘2001-08-01','YYYY-MM-DD HH24:MI:SS')

    日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用 DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;

    MYSQL中插入当前时间的几个函数是:NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中。例:insert into tablename (fieldname) values (now())

    而oracle中当前时间是sysdate
    4INTEGERint / INTEGERMysql中INTEGER等价于int
    5EXCEPTIONSQLEXCEPTION 详见<<2009001-eService-O2MG.doc>>中2.5 Mysql异常处理
    6CONSTANT VARCHAR2(1)mysql中没有CONSTANT关键字从ORACLE迁移到MYSQL,所有CONSTANT常量只能定义成变量
    7TYPE g_grp_cur IS REF CURSOR;光标 : mysql中有替代方案详见<<2009001-eService-O2MG.doc>>中2.2 光标处理
    8TYPE unpacklist_type IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;数组: mysql中借助临时表处理
    或者直接写逻辑到相应的代码中,
    直接对集合中每个值进行相应的处理
    详见<<2009001-eService-O2MG.doc>>中2.4 数组处理
    9自动增长的序列自动增长的数据类型MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
    10NULLNULL空字符的处理
    MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。

     

    MySQL与Oracle 差异比较之基本语法

     

    编号类别ORACLEMYSQL注释
    1变量的声明方式不同li_index NUMBER := 0DECLARE li_index INTEGER DEFAULT 01. mysql 使用DECLARE定义局部变量. 
       定义变量语法为:  DECLARE var_name[,...] type [DEFAULT value] 要给变量提供一个默认值,需要包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。   
    2变量的赋值方式不同lv_inputstr := iv_inputstrSET lv_inputstr = iv_inputstr1. oracle变量赋值使用:=  
       mysql 使用赋值使用set关键字. 将一个值赋给一个变量时使用"=". 
    3跳出(退出)语句不同EXIT;LEAVE procedure name;1. oracle: 如果exit语句在循环中就退出当前循环.如果exit语句不再循环中,就退出当前过程或方法. 
       Mysql: 如果leave语句后面跟的是存储过程名,则退出当前存储过程. 如果leave语句后面跟的是lable名. 则退出当前lable. 
       
    while 条件 loop
    exit;
    end loop;
    label_name:while 条件 do
        leave label_name;
    end while label_name;
    4定义游标TYPE g_grp_cur IS REF CURSOR;
         
    DECLARE cursor_name CURSOR FOR SELECT_statement;oracle可以先定义游标,然后给游标赋值. 
    mysql定义游标时就需要给游标赋值. Mysql定义游标出自 Mysql 5.1 参考手册20.2.11.1.声明光标.
    5定义数组TYPE unpacklist_type IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;可以使用临时表代替oracle数组, 也可以循环拆分字符来替代oracle数组.目前可以使用临时表来代替oracle数组. 
    详见<<2009002-OTMPPS-Difficult Questions-0001.doc>>中2.4 Mysql数组处理部分
    6注释方式不同 "-- message"  或 "/** ….  */" 或"/* ….  */""-- message"  或 "/* ….  */" 或 "#"mysql注释来自  MySQL 5.1参考手册 9.5. 注释语法, 建议同oracle一样, 单行用--, 多行/* */
    7自带日期时间函数格式不同Oracle时间格式:yyyy-MM-dd hh:mi:ssMysql时间格式:%Y-%m-%d %H:%i:%s1. MYSQL日期字段分DATE和TIME两种. 
       ORACLE日期字段只有DATE,包含年月日时分秒信息. 
    2. mysql中取当前系统时间为now()函数,精确到秒. 
       oracle中取当前数据库的系统时间为SYSDATE, 精确到秒.
    8日期加减当前时间加N天: sysdate+N
    当前时间减N天: sysdate-N
    日期相加: date_add(now(), INTERVAL 180 DAY)
    日期相减: date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second)
     
    9字符串连接符不同result  := v_int1||v_int2;set result =concat(v_int1,v_int2);
    1. oracle使用||连接字符串,也可以使用concat函数. 但Oracle的concat函数只能连接两个字符串.
     Mysql使用concat方法连接字符串. MySQL的concat函数可以连接一个或者多个字符串,如
           mysql> select concat('10');   结果为: 10.
           mysql> select concat('11','22','33','aa'); 结果为: 112233aa
    2. "||"在Mysql是与运算
    10定义游标不同CURSOR l_bk_cur IS
       SELECT B.BK_HDR_INT_KEY, B.BK_NUM
       FROM ES_SR_DTL_VRB A, ES_BK_HDR B
       WHERE A.BK_HDR_INT_KEY = B.BK_HDR_INT_KEY
             AND b.BK_STATUS != ES_BK_PKG.g_status_can
             AND A.SR_HDR_INT_KEY = ii_sr_hdr_int_key;
    DECLARE l_bk_cur CURSOR
        FOR SELECT B.BK_HDR_INT_KEY, B.BK_NUM
       FROM ES_SR_DTL_VRB A, ES_BK_HDR B
       WHERE A.BK_HDR_INT_KEY = B.BK_HDR_INT_KEY
             AND b.BK_STATUS != ES_BK_PKG.g_status_can
             AND A.SR_HDR_INT_KEY = ii_sr_hdr_int_key;
    详见<<2009002-OTMPPS-Difficult Questions-0001.doc>>中2.2 Mysql游标处理部分
    11事务回滚ROLLBACK;ROLLBACK;oracle和mysql中使用方法相同
    12GOTO语句GOTO check_date;GOTO check_date;oracle和mysql中使用方法相同

     

    https://blog.csdn.net/huangyinzhao/article/details/80739291

    展开全文
  • ORACLE日期数据类型

    万次阅读 2017-10-03 15:28:36
    oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTERVAL及TIME ZONE实际用得比较少,所以本文内容未涉及这两个...
  • 简述Oracle基本数据类型

    千次阅读 2017-06-13 14:47:08
    Oracle基本数据类型分类 总共6大类型,具体如下: 字符串类型 数字类型 日期类型 LOB类型 LONG RAW & RAW 类型 ROWID & UROWID 类型 每个类型下详细的数据类型 字符串类型 列表内容
  • ORACLE SQL数据类型转换

    千次阅读 2019-04-07 22:35:53
    ORACLE SQL数据类型转换 开发工具与关键技术:Oracle sql*plus PLSQL Developer 作者:张启翔 撰写时间:2019年3月25日 下面要说的是,如何将不同类型的数据进行转换处理 这里主要包括有三个函数 时间转换:...
  • Oracle数据类型简介

    千次阅读 2009-05-05 16:08:00
    一、概述 在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。 二、标量(SCALAR) 合法的标量类型与数据库的列所使用的类型相同,此外它还有...
  • Oracle 11g 数据类型

    千次阅读 2018-04-02 11:43:31
    建立表包括定义表的结构和添加数据记录。...(数据类型是数据的基本属性,反映了数据的类别) oracle 11g主要有3种数据类型:基本(oracle数据库内部)数据类型,集合类型,和引用类型。 基本数...
  • Oracle 时间类型

    千次阅读 2018-12-20 15:36:32
     oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTERVAL及TIME ZONE实际用得比较少,所以本文内容未涉及这两个...
  • ORACLE常见数据类型

    万次阅读 2018-05-30 14:04:30
    1、字符类型• CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度。如非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的 信息。• VARCHAR2:目前这也是VARCHAR 的同义词。这是...
  • ORACLE基本数据类型

    万次阅读 2018-08-01 14:58:16
    ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW&amp; RAW类型、ROWID &amp; UROWID类型。讲叙字符串类型前,先要讲一下编码...
  • Oracle数据类型简介

    千次阅读 2005-05-02 12:09:00
    一、概述在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。二、标量(SCALAR)合法的标量类型与数据库的列所使用的类型相同,此外它还有一些...
  • oracle 数据类型详解---日期型

    千次阅读 2017-02-14 14:24:41
    oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTERVAL及TIME ZONE实际用得比较少,所以本文内容未涉及这两个...
  • MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据类型的对应关系 MySQL与Oracle两...
  • oracle数据类型之DATETIME

    万次阅读 2009-07-28 22:33:00
    Datetime and Interval ... 在007题库中有一道关于DATETIME数据类型的题目:  Which three are DATETIME data types that can be used when specifying column definitions? (Choose three)  A. TIMESTAMP
  • Oracle基本数据类型

    千次阅读 2013-10-11 14:28:00
    oracle基本数据类型  char(n) n=1 to 2000字节 定长字符串,n字节长,如果不指定长度,缺省 为1个字节长(一个汉字为2字节) varchar2(n) n=1 to 4000字节 可变长的字符串,具体...
  • SQL Server和Oracle数据类型的对应关系

    千次阅读 2008-09-11 12:56:00
    SQL Server和Oracle数据类型的对应关系· SQL Server和Oracle数据类型的对应关系当数据从SQL SERVER2000向ORACLE 10g迁移时,可以做如下调整:SQL SERVERORACLE数字类型decimal [(P[, S])]NUMBER[(P[, S])]
  • Oracle 日期类型数据总结

    千次阅读 2019-02-16 13:57:11
    oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTERVAL及TIME ZONE实际用得比较少,所以本文内容未涉及这两个方面...
  • oracle常用数据类型

    千次阅读 2010-03-03 21:36:00
    author:skatetime:2010/03/03 oracle常用数据类型 今天同事问些数据类型的问题,有的还真有点记不清了,于是就简单总结下常用的数据类型以备日后查用 1、Char 定长格式字符串,在数据库中存储时不足位数填补...
  • Oracle日期时间类型

    2012-04-19 20:18:51
    Oracle没有datetime类型,只有date类型,date类型可以同时用作日期时间类型。这里对Oracle日期时间类型做一下简单的介绍
  • ORACLE基本数据类型总结

    千次阅读 2016-12-19 10:17:22
    ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。 在讲叙字符串类型前,先要讲一下编码。字符串...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 212,933
精华内容 85,173
关键字:

oracle数据类型时间