oracle中float 在sqlserver中对应哪个 类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中float 在sqlserver中对应哪个 类型相关的知识,希望对你有一定的参考价值。
Oracle SQLServer 比较
SQLServer 常见的数据库类型
字符数据类型 CHAR CHAR :都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb
变长字符数据类型 VARCHAR2 VARCHAR :racle里面最大长度为4kb,SQLServer里面最大长度为8kb
根据字符集而定的固定长度字符串 NCHAR :NCHAR 前者最大长度2kb后者最大长度4kb
根据字符集而定的可变长度字符串 NVARCHAR2 NVARCHAR :者最大长度都为4kb
日期和时间数据类型 DATE 有Datetime和Smalldatetime两种 在oracle里面格式为DMY在SQLSerser里面可以调节,默认的为MDY
数字类型 NUMBER(P,S) NUMERIC[P(,S)] :Oracle里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。
数字类型 DECIMAL(P,S) DECIMAL[P(,S)] :racle里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。
整数类型 INTEGER INT 同为整数类型,存储大小都为4个字节
浮点数类型 FLOAT FLOAT
实数类型 REAL REAL
ORACLE的数据类型
常用的数据库字段类型如下:
字段类型 中文说明 限制条件 其它说明
CHAR 固定长度字符串 最大长度2000 bytes
VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749
NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes
NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS)
LONG 可变长度的字符数据 最大长度2G(231-1)足够存储大部头著作
RAW 固定长度二进制数据 最大长度2000 bytes 可存放比较小的多媒体图象声音等
LONG RAW 可变长度的二进制数据 最大长度2G 可存放比较大的多媒体图象声音等
BLOB 大型的二进制对象(可变长度)最大长度4G
CLOB 大型的CHAR类型数据
NCLOB 大型的NCHAR类型数据
BFILE 存放在数据库外的大型的二进制文件
ROWID 数据表中记录的唯一行号10 bytes ********.****.****格式,*为0或1,存储在索引中。
UROWID 同上 存储在索引中
NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes
NUMBER(P,S) 数字类型 P为总的位数,S为小数位
DECIMAL(P,S) 数字类型P为总的位数,S为小数位
INTEGER 整数类型 的整数
FLOAT 浮点数类型
NUMBER(38),双精度
REAL 实数类型
NUMBER(63),精度更高
注意:每个表中只能有一个LONG或LONG RAW列,……….。
几个常见的SQLSERVER和ORACLE数据类型对应关系表格
SQL Server和Oracle数据类型的对应关系
在存储过程中对 Oracle 表进行排序
【中文标题】在存储过程中对 Oracle 表进行排序【英文标题】:Sorting an Oracle table inside a stored procedure 【发布时间】:2013-08-12 20:20:16 【问题描述】:我有一个从 .sql 文件运行的存储过程,该文件接受用户的输入并运行该过程。该过程运行许多查询并将一行值插入到表中。在 .sql 文件中,我想在完成运行查询后按某个列对表进行排序。目前我有:
DECLARE
NAMEPARAM VARCHAR2(200);
VERSIONPARAM VARCHAR2(200);
STARTDATE DATE;
ENDDATE DATE;
BEGIN
NAMEPARAM := '&1';
VERSIONPARAM := '&2';
STARTDATE := '&3';
ENDDATE := '&4';
PROCEDURE(NAMEPARAM, VERSIONPARAM, STARTDATE, ENDDATE);
COMMIT;
Select * from TABLE_NAME
ORDER BY COLUMN_NAME ASC;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20101,SQLERRM);
END;
/
但是它会抛出错误:
PLS-00428:此 SELECT 语句中应有一个 INTO 子句
我不知道为什么它需要一个 into 子句。帮忙?
编辑: 澄清一下,我不想看到已排序表的输出,我希望表本身能够更新并按列按升序排序。
【问题讨论】:
“排序 Oracle 表”是什么意思?表是无序的行集。他们没有订单。查询结果可以排序,由order by
子句决定。
@javakid1993,我怀疑您在误解 Oracle 表中的行具有内在顺序。哪有这回事。行仅在查询时排序。
好吧,我的意思是即使在插入要按顺序插入的行时也要有一个子句。但我理解我来自哪里的错误。谢谢。
【参考方案1】:
如果您将SELECT
语句放在 PL/SQL 块中,则需要对结果进行一些处理。如果您期望恰好是一行,则可以使用 SELECT INTO
局部变量。假设您需要多行,您可以编写一个循环遍历行的FOR
循环,或者您可以将行BULK COLLECT
放入一个PL/SQL 集合中。您也可以打开一个SYS_REFCURSOR
,但由于无法从匿名 PL/SQL 块返回它,这似乎不太可能是您想要的。
我的猜测是您希望SELECT
语句位于 PL/SQL 块之外,并且您希望使用任何工具来执行 .sql 脚本来运行 PL/SQL 块以填充表然后运行SELECT
语句,将结果写入您正在假脱机输出的任何文件/控制台。
【讨论】:
我不希望它输出到我希望表格本身按该列更新和排序的任何地方。我什至都不想看到输出。 @javakid1993,你读过其他的 cmets 吗?通常,数据库文件中的表行没有“排序”。可以对查询的结果进行排序。有索引组织表,与标准的堆管理表不同,但我怀疑这就是您要问的。 正如 Gordon 和 OldProgrammer 所指出的 - 为什么要对表格进行“排序”而不想要任何排序的输出?如果您能清楚地考虑最终结果并制定解决方案,这将有所帮助。以上是关于oracle中float 在sqlserver中对应哪个 类型的主要内容,如果未能解决你的问题,请参考以下文章
怎么将sql2005中的数据导入到oracle中,求具体步骤补助方法
sqlserver中float转varchar时不显示科学计数法