ORACLE与SQLSERVER语法区别
⼀、数据类型
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
( /*输⼊、输出参数的声明部分*/ )
oracle decimal类型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)
Translate(str_exp,from_str,to_str) Stuff(char_exp1,start,length,
Char_exp2)
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论