Oracle和SQLServer的SQL语法差异总结.docxVIP

  • 5
  • 0
  • 约5.46千字
  • 约 6页
  • 2017-05-08 发布于四川
  • 举报
Oracle和SQLServer的SQL语法差异总结

Oracle与SQL Server应用差异对比分析项目Oracle 10gSQLServer 2008备注存储过程格式CREATEORREPLACEPROCEDURE存储过程名(参数列表) ISBegin ---存储过程内容End 存储过程名;CREATEPROCEDURE存储过程名 (参数列表) AS --存储过程内容存储过程参数指定参数类型,但不指定长度在参数及类型间要加入出标识(IN、OUT)Eg:task_remark INVARCHAR2prm_code OUTNUMBER指定参数类型,并要指定长度对于出参需要在类型后面加OUTPUT(或OUT)Eg:@task_remark VARCHAR(10)@prm_code int output使用存储过程直接使用存储过程名参数在存储过程后面的括号包内列出Eg: p_wfm_getcolumns(v_tablename,v_tablecolumn);调用存储过程名前面需要加 exec关键字参数在存储过程后面逐个列出出参后面要加关键字output或outEg:EXECP_WFM_GETCOLUMNS@tablename,@tablecolumnOUTPUT自定义函数格式CREATEORREPLACEFUNCTION函数名 (参数列表)RETURN返回值类型ISBEGINEND;CREATEFUNCTION函数名(参数列表)RETURNs返回值类型AS--函数内容自定义函数内容指定参数类型,但不指定长度在参数及类型间要加入出标识(IN、OUT)Eg:task_remark INVARCHAR2prm_code OUTNUMBER支持对数据增、删、改操作支持动态SQL语句指定参数类型,并要指定长度不支持出参Eg:@task_remark VARCHAR(10)不支持对数据增、删、改操作不支持动态SQL语句使用自定义函数直接使用函数名Eg:V_result :=f_wfm_isandbegin(flow_id, step_id)在函数名前面加上dbo.Eg:Set @result=dbo.f_wfm_isandbegin(@flow_id, @step_id)游标游标声明DECLARE cursor 游标名 is select语句使用游标过程打开(open)-提取(fetch)-关闭(close)支持快捷使用游标,直接使用for循环,数据库会自动打开、提取及关闭游标游标声明DECLARE游标名cursor for select语句使用游标过程打开(open)-提取(fetch)-关闭(close)-销毁(变量变量前不可加@符号存储过程中变量声明不需要declare Eg:Code varchar2(5);变量类型可按表中字段类型动态定义Eg:V_id sysc01.id%type;变量前需要加@符号变量声明需要使用Declare关键字Eg:DECLARE@codevarchar(5);不支持按表字段类型动态定义赋值变量直接赋值,变量 := 表达式;Eg: v_result := ‘abcd’;通过SQL语句Select 表达式 into 变量 from 表Eg:Select code,name into v_code,v_name from sysc01 Where id = 1000变量直接赋值,Set 变量=表达式;Eg: Set @result = ‘abcd’通过SQL语句赋值Select 变量=表达式 from 表Eg:Select @code=code,@name=name from sysc01 where id = 1000语句结束符SQL语句使用分号 ; 作为语句的结束SQL语句不需要加分号;作为结束符(加也可)大小写Oracle对字符区分大小写默认对字符不区分大小写,也可修改数据库配置支持区分大小写序列有序列sequence对象,无自动增长列无序列对象,表中有自动增长列Select 语法结果集可做为表使用,使用时可不加别名Eg:Select * from (select * from tab1)虚表 dual的使用,对于select计算某些与实体表无关的表达式时,要使用虚表dualEg:Select round(1/3,2) from dual ;结果集可做为表使用,使用时必须加别名Eg:Select * from (select * from tab1) a对于Select计算某些与实体表无关的表达式时,可使用不带from的select语句Eg:Select round(1/3,2) ;Update语法不可关联表更新Eg:For cur in (select a.id,b.value from ainner join b on a.id =

文档评论(0)

1亿VIP精品文档

相关文档