欢迎来到天天文库
浏览记录
ID:35294801
大小:28.37 KB
页数:6页
时间:2019-03-23
《oracle与sqlserver的sql语法差异总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Oracle与SQLServer应用差异对比分析项目Oracle10gSQLServer2008备注存储过程格式CREATEORREPLACEPROCEDURE存储过程名(参数列表)ISBegin---存储过程内容End存储过程名;CREATEPROCEDURE存储过程名(参数列表)AS--存储过程内容存储过程参数1、指定参数类型,但不指定长度2、在参数及类型间要加入出标识(IN、OUT)Eg:task_remarkINVARCHAR2prm_codeOUTNUMBER1、指定参数类型,并要指定长度2、对于出参需要在类型后面加OUTPUT(或OUT)Eg:@task_remarkV
2、ARCHAR(10)@prm_codeintoutput使用存储过程1、直接使用存储过程名2、参数在存储过程后面的括号包内列出Eg:p_wfm_getcolumns(v_tablename,v_tablecolumn);1、调用存储过程名前面需要加exec关键字2、参数在存储过程后面逐个列出3、出参后面要加关键字output或outEg:EXECP_WFM_GETCOLUMNS@tablename,@tablecolumnOUTPUT自定义函数格式CREATEORREPLACEFUNCTION函数名(参数列表)RETURN返回值类型ISBEGINEND;CREATEFUNCTION
3、函数名(参数列表)RETURNs返回值类型AS--函数内容自定义函数内容1、指定参数类型,但不指定长度2、在参数及类型间要加入出标识(IN、OUT)Eg:task_remarkINVARCHAR2prm_codeOUTNUMBER3、支持对数据增、删、改操作4、支持动态SQL语句1、指定参数类型,并要指定长度2、不支持出参Eg:@task_remarkVARCHAR(10)3、不支持对数据增、删、改操作4、不支持动态SQL语句使用自定义函数1、直接使用函数名Eg:V_result:=f_wfm_isandbegin(flow_id,step_id)1、在函数名前面加上dbo.Eg:
4、Set@result=dbo.f_wfm_isandbegin(@flow_id,@step_id)游标1、游标声明DECLAREcursor游标名isselect语句1、游标声明DECLARE游标名cursorforselect语句1、使用游标过程打开(open)->提取(fetch)->关闭(close)2、支持快捷使用游标,直接使用for循环,数据库会自动打开、提取及关闭游标1、使用游标过程打开(open)->提取(fetch)->关闭(close)->销毁(变量1、变量前不可加@符号2、存储过程中变量声明不需要declareEg:Codevarchar2(5);3、变量类型
5、可按表中字段类型动态定义Eg:V_idsysc01.id%type;1、变量前需要加@符号2、变量声明需要使用Declare关键字Eg:DECLARE@codevarchar(5);3、不支持按表字段类型动态定义赋值1、变量直接赋值,变量:=表达式;Eg:v_result:=‘abcd’;2、通过SQL语句Select表达式into变量from表Eg:Selectcode,nameintov_code,v_namefromsysc01Whereid=10001、变量直接赋值,Set变量=表达式;Eg:Set@result=‘abcd’2、通过SQL语句赋值Select变量=表达式f
6、rom表Eg:Select@code=code,@name=namefromsysc01whereid=1000语句结束符SQL语句使用分号;作为语句的结束SQL语句不需要加分号;作为结束符(加也可)大小写Oracle对字符区分大小写默认对字符不区分大小写,也可修改数据库配置支持区分大小写序列1、有序列sequence对象,无自动增长列1、无序列对象,表中有自动增长列Select语法1、结果集可做为表使用,使用时可不加别名Eg:Select*from(select*fromtab1)2、虚表dual的使用,对于select计算某些与实体表无关的表达式时,要使用虚表dualEg:Se
7、lectround(1/3,2)fromdual;3、1、结果集可做为表使用,使用时必须加别名Eg:Select*from(select*fromtab1)a2、对于Select计算某些与实体表无关的表达式时,可使用不带from的select语句Eg:Selectround(1/3,2);3、Update语法不可关联表更新Eg:Forcurin(selecta.id,b.valuefroma可关联表更新Eg:Updateaseta.value=isnull(b.val
此文档下载收益归作者所有