資源描述:
《oracle與sqlserver的sql語(yǔ)法差異總結(jié)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、Oracle與SQLServer應(yīng)用差異對(duì)比分析項(xiàng)目Oracle10gSQLServer2008備注存儲(chǔ)過(guò)程格式CREATEORREPLACEPROCEDURE存儲(chǔ)過(guò)程名(參數(shù)列表)ISBegin---存儲(chǔ)過(guò)程內(nèi)容End存儲(chǔ)過(guò)程名;CREATEPROCEDURE存儲(chǔ)過(guò)程名(參數(shù)列表)AS--存儲(chǔ)過(guò)程內(nèi)容存儲(chǔ)過(guò)程參數(shù)1、指定參數(shù)類型,但不指定長(zhǎng)度2、在參數(shù)及類型間要加入出標(biāo)識(shí)(IN、OUT)Eg:task_remarkINVARCHAR2prm_codeOUTNUMBER1、指定參數(shù)類型,并要指定長(zhǎng)度2、對(duì)于出參需要在類型后面加OUTPUT(或OUT)Eg:@task_remarkV
2、ARCHAR(10)@prm_codeintoutput使用存儲(chǔ)過(guò)程1、直接使用存儲(chǔ)過(guò)程名2、參數(shù)在存儲(chǔ)過(guò)程后面的括號(hào)包內(nèi)列出Eg:p_wfm_getcolumns(v_tablename,v_tablecolumn);1、調(diào)用存儲(chǔ)過(guò)程名前面需要加exec關(guān)鍵字2、參數(shù)在存儲(chǔ)過(guò)程后面逐個(gè)列出3、出參后面要加關(guān)鍵字output或outEg:EXECP_WFM_GETCOLUMNS@tablename,@tablecolumnOUTPUT自定義函數(shù)格式CREATEORREPLACEFUNCTION函數(shù)名(參數(shù)列表)RETURN返回值類型ISBEGINEND;CREATEFUNCTION
3、函數(shù)名(參數(shù)列表)RETURNs返回值類型AS--函數(shù)內(nèi)容自定義函數(shù)內(nèi)容1、指定參數(shù)類型,但不指定長(zhǎng)度2、在參數(shù)及類型間要加入出標(biāo)識(shí)(IN、OUT)Eg:task_remarkINVARCHAR2prm_codeOUTNUMBER3、支持對(duì)數(shù)據(jù)增、刪、改操作4、支持動(dòng)態(tài)SQL語(yǔ)句1、指定參數(shù)類型,并要指定長(zhǎng)度2、不支持出參Eg:@task_remarkVARCHAR(10)3、不支持對(duì)數(shù)據(jù)增、刪、改操作4、不支持動(dòng)態(tài)SQL語(yǔ)句使用自定義函數(shù)1、直接使用函數(shù)名Eg:V_result:=f_wfm_isandbegin(flow_id,step_id)1、在函數(shù)名前面加上dbo.Eg:
4、Set@result=dbo.f_wfm_isandbegin(@flow_id,@step_id)游標(biāo)1、游標(biāo)聲明DECLAREcursor游標(biāo)名isselect語(yǔ)句1、游標(biāo)聲明DECLARE游標(biāo)名cursorforselect語(yǔ)句1、使用游標(biāo)過(guò)程打開(kāi)(open)->提取(fetch)->關(guān)閉(close)2、支持快捷使用游標(biāo),直接使用for循環(huán),數(shù)據(jù)庫(kù)會(huì)自動(dòng)打開(kāi)、提取及關(guān)閉游標(biāo)1、使用游標(biāo)過(guò)程打開(kāi)(open)->提取(fetch)->關(guān)閉(close)->銷毀(變量1、變量前不可加@符號(hào)2、存儲(chǔ)過(guò)程中變量聲明不需要declareEg:Codevarchar2(5);3、變量類型
5、可按表中字段類型動(dòng)態(tài)定義Eg:V_idsysc01.id%type;1、變量前需要加@符號(hào)2、變量聲明需要使用Declare關(guān)鍵字Eg:DECLARE@codevarchar(5);3、不支持按表字段類型動(dòng)態(tài)定義賦值1、變量直接賦值,變量:=表達(dá)式;Eg:v_result:=‘a(chǎn)bcd’;2、通過(guò)SQL語(yǔ)句Select表達(dá)式into變量from表Eg:Selectcode,nameintov_code,v_namefromsysc01Whereid=10001、變量直接賦值,Set變量=表達(dá)式;Eg:Set@result=‘a(chǎn)bcd’2、通過(guò)SQL語(yǔ)句賦值Select變量=表達(dá)式f
6、rom表Eg:Select@code=code,@name=namefromsysc01whereid=1000語(yǔ)句結(jié)束符SQL語(yǔ)句使用分號(hào);作為語(yǔ)句的結(jié)束SQL語(yǔ)句不需要加分號(hào);作為結(jié)束符(加也可)大小寫(xiě)Oracle對(duì)字符區(qū)分大小寫(xiě)默認(rèn)對(duì)字符不區(qū)分大小寫(xiě),也可修改數(shù)據(jù)庫(kù)配置支持區(qū)分大小寫(xiě)序列1、有序列sequence對(duì)象,無(wú)自動(dòng)增長(zhǎng)列1、無(wú)序列對(duì)象,表中有自動(dòng)增長(zhǎng)列Select語(yǔ)法1、結(jié)果集可做為表使用,使用時(shí)可不加別名Eg:Select*from(select*fromtab1)2、虛表dual的使用,對(duì)于select計(jì)算某些與實(shí)體表無(wú)關(guān)的表達(dá)式時(shí),要使用虛表dualEg:Se
7、lectround(1/3,2)fromdual;3、1、結(jié)果集可做為表使用,使用時(shí)必須加別名Eg:Select*from(select*fromtab1)a2、對(duì)于Select計(jì)算某些與實(shí)體表無(wú)關(guān)的表達(dá)式時(shí),可使用不帶from的select語(yǔ)句Eg:Selectround(1/3,2);3、Update語(yǔ)法不可關(guān)聯(lián)表更新Eg:Forcurin(selecta.id,b.valuefroma可關(guān)聯(lián)表更新Eg:Updateaseta.value=isnull(b.val