sql語句使用綁定變量方法

sql語句使用綁定變量方法

ID:6735728

大小:40.00 KB

頁數(shù):2頁

時間:2018-01-24

sql語句使用綁定變量方法_第1頁
sql語句使用綁定變量方法_第2頁
資源描述:

《sql語句使用綁定變量方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Oracle對SQL的處理過程1、語法檢查(syntaxcheck),檢查此SQL的拼寫是否符合語法。2、語義檢查(semanticcheck),諸如檢查SQL語句中的訪問對象是否存在及該用戶是否具備相應的權(quán)限。3、對SQL語句進行解析(prase),利用內(nèi)部算法對SQL進行解析,生成解析樹(parsetree)及執(zhí)行計劃(executionplan)。4、執(zhí)行SQL,返回結(jié)果(executeandreturn)。1415926535zr軟、硬解析Oracle利用內(nèi)部的hash算法來取得該sql的hash值,然后在librarycache里查找是否存在該has

2、h值;假設(shè)存在,則將此sql與cache中的進行比較;假設(shè)“相同”,就將利用已有的解析樹與執(zhí)行計劃,而省略了優(yōu)化器的相關(guān)工作。這也就是軟解析的過程。誠然,如果上面的2個假設(shè)中任有一個不成立,那么優(yōu)化器都將進行創(chuàng)建解析樹、生成執(zhí)行計劃的動作。這個過程就叫硬解析。創(chuàng)建解析樹、生成執(zhí)行計劃對于SQL的執(zhí)行來說是開銷昂貴的動作,所以,應當極力避免硬解析,盡量使用軟解析。SQL執(zhí)行計劃一個SQL語句表示你所想要得到的但是并沒有告訴Server如何去做。例如,利用一個SQL語句,你可能要Server取出所有住在Prague的客戶。當Server收到的這條SQL的時候,第一

3、件事情并不是解析它。如果這條SQL沒有語法錯誤,Server才會繼續(xù)工作。Server會決定最好的計算方式。Server會選擇,是讀整個客戶表好呢,還是利用索引會比較快些。Server會比較所有可能方法所耗費的資源。最終SQL語句被物理性執(zhí)行的方法被稱做執(zhí)行計劃或者是查詢計劃。一個執(zhí)行計劃有若干基本操作組成。例如,遍歷整張表,利用索引,執(zhí)行一個嵌套循環(huán)或Hash連接等等。負責處理或計算最優(yōu)的執(zhí)行計劃的DBServer組件叫優(yōu)化器。優(yōu)化器是建立在其所在的DB資源的基礎(chǔ)上而進行工作的。綁定變量查詢通常只是因為改變where子句中的內(nèi)容而產(chǎn)生不同的結(jié)果。為了在這種情

4、況下避免硬解析,需要使用綁定變量(bindvariable)。它是用戶放入查詢中的占位符,它會告訴Oracle隨后為這個變量提供一個值,現(xiàn)在需要生成一個方案,但我實際執(zhí)行語句的時候,我會提供應該使用的實際值。WEB頁面執(zhí)行SQL語句使用綁定變量:<%StringsqlStr="selectto_char(CONTRACT_NO)CONTRACTNO,to_char(id_no)idNo,user_passwdfromdcustmsgwherephone_no=:phoneandcust_id=:custidandsubstr(run_code,2,1)<'a'

5、";Stringparam2="phone="+phoneNo+",custid="+custID;%>"outnum="3">"/>"/>逗號分隔變量,number型的要to_char服務中SQL語句使用綁定變量:

6、1直接執(zhí)行的SQL語句中的綁定變量:EXECSQLSELECTProduct_Code,Trim(Product_Name),Srv_CodeINTO:vProduct_Code,:vProduct_Name,:vSrv_CodeFROMsGPRSSrvCodeWHEREProduct_Code=:vCur_ProdCodeANDSUBSTR(Srv_Code,1,4)=:vSrv_Code;2動態(tài)語句中使用綁定變量:sprintf(vSql_Text,"SELECTbegin_timeFROMdSrvMsg%sWHEREid_no=:vId_NoANDpro

7、duct_code=:vProduct_Code",tail_id);EXECSQLEXECUTEBEGINEXECUTEIMMEDIATE:vSql_TextINTO:vBeginTimeusing:vId_No,:vProduct_Code;END;3游標中使用綁定變量:sprintf(vSql_Text,"SELECTservice_codeFROMssrvinfoWHEREproduct_code=:vProduct_Code");EXECSQLPREPAREpre_getsrv2from:vSql_Text;EXECSQLDECLAREcur_g

8、etsrv2CURSORforpre_

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。