现在的位置: 首页 > 综合 > 正文

ORACLE与SQL SERVER语法区别

2013年12月13日 ⁄ 综合 ⁄ 共 2932字 ⁄ 字号 评论关闭

一、数据类型

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








在创建表及其主键、外键、
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

 

【上篇】
【下篇】

抱歉!评论已关闭.