ORACLE与SQL SERVER语法区别 2
2012-07-11 16:39
519 查看
ORACLE与SQL SERVER语法区别
一、数据类型
ORACLE与SQL SERVER在数据类型的对比如下:
二、表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)
在创建表及其主键、外键、CHECK、UNIQUE、DEFAULT、INDEX时,SQL SERVER 与ORACLE的语法大致相同。主要区别如下:
(1) Oracle定义表字段的default属性紧跟字段类型之后,如下:
Create table MZ_Ghxx
( ghlxh number primay key ,
rq date default sysdate not null,
….
)
而不能写成
Create table MZ_Ghxx
( ghlxh number primay key ,
rq date not null default sysdate,
….
)
三、存储过程/函数
过程与函数的区别
函数可以返回一个值给调用环境;而过程不能,过程只能通过返回参数(带“OUT”或“IN OUT”)传回去数据。
SQLSERVER中存储过程的结构大致如下
CREATE PROCEDURE procedure_name
/*输入、输出参数的声明部分*/
AS
DECLARE
/*局部变量的声明部分*/
BEGIN
/*主体SQL语句部分*/
/*游标声明、使用语句在此部分*/
END
ORACLE中存储过程的结构大致如下
CREATE OR REPLACE PROCEDURE procedure_name
( /*输入、输出参数的声明部分*/ )
AS
/*局部变量、游标等的声明部分*/
BEGIN
/*主体SQL语句部分*/
/*游标使用语句在此部分*/
EXCEPTION
/*异常处理部分*/
END ;
ORACLE端FUNCTION语法说明
CREATE [OR REPLACE] FUNCTION function_name
[(argument [{IN | OUT | IN OUT }] ) type,
…
[(argument [{IN | OUT | IN OUT }] ) type
RETURN return_type {IS | AS}
BEGIN
…
END;
四、变量赋值
在SQL SERVER语句中用如下语句对局部变量赋值(初始值或
数据库表的字段值或表达式):
“SELECT 局部变量名 = 所赋值(初始值或数据库表的字段值或表达式)”;
而在ORACLE中,将初始值赋给局部变量时,用如下语句:
“局部变量名 : = 所赋值(初始值或表达式);” ,
将检索出的字段值赋给局部变量时,用如下语句:
“SELECT 数据库表的字段值 INTO 局部变量名 …” 。
五、常用函数比较(以下的exp为expression的缩写)
一、数据类型
ORACLE与SQL SERVER在数据类型的对比如下:
SQL SERVER | ORACLE | |
数字类型 | DECIMAL[(P[, S])] | NUMBER[(P[, S])] |
NUMERIC[(P[, S])] | NUMBER[(P[, S])] | |
FLOAT[(N)] | NUMBER[(N)] | |
INT | NUMBER | |
SMALLINT | NUMBER | |
TINYINT | NUMBER | |
MONEY | NUMBER[19,4] | |
SMALLMONEY | NUMBER[19,4] | |
字符类型 | CHAR[(N)] | CHAR[(N)] |
VARCHAR[(N)] | VARCHAR2[(N)] | |
日期时间类型 | DATETIME | DATE |
SMALLDATETIME | DATE | |
其它 | TEXT | CLOB |
IMAGE | BLOB | |
BIT | NUMBER(1) |
在创建表及其主键、外键、CHECK、UNIQUE、DEFAULT、INDEX时,SQL SERVER 与ORACLE的语法大致相同。主要区别如下:
(1) Oracle定义表字段的default属性紧跟字段类型之后,如下:
Create table MZ_Ghxx
( ghlxh number primay key ,
rq date default sysdate not null,
….
)
而不能写成
Create table MZ_Ghxx
( ghlxh number primay key ,
rq date not null default sysdate,
….
)
三、存储过程/函数
过程与函数的区别
函数可以返回一个值给调用环境;而过程不能,过程只能通过返回参数(带“OUT”或“IN OUT”)传回去数据。
SQLSERVER中存储过程的结构大致如下
CREATE PROCEDURE procedure_name
/*输入、输出参数的声明部分*/
AS
DECLARE
/*局部变量的声明部分*/
BEGIN
/*主体SQL语句部分*/
/*游标声明、使用语句在此部分*/
END
ORACLE中存储过程的结构大致如下
CREATE OR REPLACE PROCEDURE procedure_name
( /*输入、输出参数的声明部分*/ )
AS
/*局部变量、游标等的声明部分*/
BEGIN
/*主体SQL语句部分*/
/*游标使用语句在此部分*/
EXCEPTION
/*异常处理部分*/
END ;
ORACLE端FUNCTION语法说明
CREATE [OR REPLACE] FUNCTION function_name
[(argument [{IN | OUT | IN OUT }] ) type,
…
[(argument [{IN | OUT | IN OUT }] ) type
RETURN return_type {IS | AS}
BEGIN
…
END;
四、变量赋值
在SQL SERVER语句中用如下语句对局部变量赋值(初始值或
数据库表的字段值或表达式):
“SELECT 局部变量名 = 所赋值(初始值或数据库表的字段值或表达式)”;
而在ORACLE中,将初始值赋给局部变量时,用如下语句:
“局部变量名 : = 所赋值(初始值或表达式);” ,
将检索出的字段值赋给局部变量时,用如下语句:
“SELECT 数据库表的字段值 INTO 局部变量名 …” 。
五、常用函数比较(以下的exp为expression的缩写)
Sql server | orcale |
字符类函数 | |
Ascii(char_exp) | Ascii(str_exp) |
Char(int_exp) | Chr(int_exp) |
Datalength(char_exp) | Length(str_exp) |
Substring(exp, start, length) | Substr(exp, start, length) |
Upper(char_exp) | Upper(str_exp) |
Lower(char_exp) | Lower(str_exp) |
Stuff(char_exp1,start,length, Char_exp2) | Translate(str_exp,from_str,to_str) |
Ltrim(char_exp) | Ltrim(str_exp1 [,str_exp2]) |
Rtrim(char_exp) | Rtrim(str_exp1 [,str_exp2]) |
日期类函数 | |
Getdate() | Sysdate |
数学类函数 | |
Abs(numeric_exp) | Abs(number_exp) |
Ceiling(numeric_exp) | Ceil(number_exp) |
Exp(float_exp) | Exp(number_exp) |
Floor(numeric_exp) | Floor(number_exp) |
Power(numeric_exp,int_exp) | Power(number_exp1,number_exp2) |
Round(numeric_exp,int_exp) | Round(number_exp1 [,number_exp2]) |
Sign(int_exp) | Sign(number_exp) |
Sqrt(float_exp) | Sqrt(number_exp) |
转换函数 | |
Convert(datatype[(length)],exp,format) | To_char(datatype,str_format) |
Convert(datatype[(length)],exp,format)s | To_date(str_exp,date_format) |
Convert(datatype[(length)],exp,format) | To_number(str_exp,num_format) |
其它函数 | |
AVG([ALL | DISTINCT] col) | AVG([ALL | DISTINCT] col) |
COUNT({[ALL | DISTINCT] col] | *}) | COUNT({[ALL | DISTINCT] col} | *)) |
MAX([ALL | DISTINCT] col) | MAX([ALL | DISTINCT] col) |
MIN([ALL | DISTINCT] col) | MIN([ALL | DISTINCT] col) |
SUM([ALL | DISTINCT] col) | SUM([ALL | DISTINCT] col) |
STDEV(col) | STDDEV(col) |
VAR(col) | VARIANCE(col) |
ISNULL(check_exp, replace_value) | NVL(check_exp, replace_value) |
CASE | DECCODE |
相关文章推荐
- ORACLE与SQL SERVER语法区别
- SQL Server与oracle两者区别之语法区别
- Access和sql server的语法区别 (包括db2 oracle)
- Oracle与SQL Server的语法区别
- Access和sql server的语法区别 db2 oracle [darkcom 发表于 2006-7-27 8:51:21]
- Access和sql server的语法区别 (包括db2 oracle)
- sql Server与ORACLE的语法区别 自用整理!
- ORACLE与SQL SERVER语法区别
- Access和sql server的语法区别 (包括db2 oracle)
- ORACLE与SQL SERVER语法区别
- 从SQL Server向Oracle迁移的技术实现方案(七)常用SQL语法与函数
- 数据库oracle与mysql在语法上的区别
- Oracle-游标的种类、语法、属性及使用,NO_DATA_FOUND和%NOTFOUND的区别
- SQL Server 和 Oracle 以及 MySQL 数据库的区别
- ORACLE和SQL语法区别归纳
- MySQL、Oracle、SQL Server区别
- Oracle 和Mysql 语法区别
- sql 和 oracle 的语法区别
- Oracle和SQL Server的一些区别(函数和存储过程)
- ORACLE与SQL SERVER的区别