讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、新會(huì)網(wǎng)站維護(hù)、網(wǎng)站推廣。
我試驗(yàn)過(guò)了,就是exec 存儲(chǔ)過(guò)程名或者execute 存儲(chǔ)過(guò)程名(參數(shù)),請(qǐng)你在仔細(xì)確認(rèn)一下,你的存儲(chǔ)過(guò)程名寫(xiě)沒(méi)寫(xiě)對(duì)呀,或者你沒(méi)有進(jìn)入sqlplus中?---- 以上,希望對(duì)你能有幫助。
你的參數(shù)變換的種類(lèi)多嗎,我們做報(bào)表,每天晚上把所有的參數(shù)變換都做一次分析,然后保存在一個(gè)中間表中,前臺(tái)WEB頁(yè)面查詢的實(shí)際上是中間表的結(jié)果!
存儲(chǔ)過(guò)程內(nèi)部也很有講究。在asp頁(yè)面上顯示返回參數(shù),要先關(guān)閉記錄集才行幾種ASP調(diào)用存儲(chǔ)過(guò)程的方法:1 這也是最簡(jiǎn)單的方法,兩個(gè)輸入?yún)?shù),無(wú)返回值:set connection = server.createobject("adodb.connection")connection.open someDSNConnection.Execute "procname varvalue1, varvalue2"將所有對(duì)象清為nothing,釋放資源connection.closeset connection = nothing2 如果要返回 Recordset 集:set connection = server.createobject("adodb.connection")connection.open someDSNset rs = server.createobject("adodb.recordset")rs.Open "Exec procname varvalue1, varvalue2",connection將所有對(duì)象清為nothing,釋放資源rs.closeconnection.closeset rs = nothingset connection = nothing
應(yīng)該不行,它是數(shù)據(jù)庫(kù)規(guī)定的一種格式,建存儲(chǔ)過(guò)的時(shí)候是 create proc us_name用的時(shí)候 就使用 exec us_name 調(diào)用,我覺(jué)得如果你不寫(xiě)exec 數(shù)據(jù)庫(kù)沒(méi)法區(qū)分你的存儲(chǔ)過(guò)程名就叫是什么東西,是個(gè)表名?視圖?變量?但是你用了這個(gè)exec關(guān)鍵字,數(shù)據(jù)庫(kù)管理系統(tǒng)就知道你是想調(diào)用一個(gè)存儲(chǔ)過(guò)程了
sp_executesql 支持對(duì) Transact-SQL 字符串中指定的任何參數(shù)的參數(shù)值進(jìn)行替換,但是 EXECUTE 語(yǔ)句不支持。因此,由 sp_executesql 生成的 Transact-SQL 字符串比由 EXECUTE 語(yǔ)句所生成的更相似。SQL Server 查詢優(yōu)化器可能將來(lái)自 sp_executesql 的 Transact-SQL 語(yǔ)句與以前所執(zhí)行的語(yǔ)句的執(zhí)行計(jì)劃相匹配,以節(jié)約編譯新的執(zhí)行計(jì)劃的開(kāi)銷(xiāo)。
使用 EXECUTE 語(yǔ)句時(shí),必須將所有參數(shù)值轉(zhuǎn)換為字符或 Unicode 并使其成為 Transact-SQL 字符串的一部分
希望你能理解這一段,我是不太明白
EXEC 和 SP_EXECUTESQL 的區(qū)別
1、 性能:
官方描述:sp_executesql stmt 參數(shù)中的 Transact-SQL 語(yǔ)句或批處理在執(zhí)行 sp_executesql 語(yǔ)句時(shí)才編譯。隨后,將編譯 stmt 中的內(nèi)容,并將其作為執(zhí)行計(jì)劃運(yùn)行。該執(zhí)行計(jì)劃獨(dú)立于名為 sp_executesql 的批處理的執(zhí)行計(jì)劃。sp_executesql 批處理不能引用調(diào)用 sp_executesql 的批處理中聲明的變量。sp_executesql 批處理中的本地游標(biāo)或變量對(duì)調(diào)用 sp_executesql 的批處理是不可見(jiàn)的。對(duì)數(shù)據(jù)庫(kù)上下文所做的更改只在 sp_executesql 語(yǔ)句結(jié)束前有效。如果只更改了語(yǔ)句中的參數(shù)值,則 sp_executesql 可用來(lái)代替存儲(chǔ)過(guò)程多次執(zhí)行 Transact-SQL 語(yǔ)句。因?yàn)?Transact-SQL 語(yǔ)句本身保持不變,僅參數(shù)值發(fā)生變化,所以 SQL Server 查詢優(yōu)化器可能重復(fù)使用首次執(zhí)行時(shí)所生成的執(zhí)行計(jì)劃。
說(shuō)通俗一點(diǎn)就是:如果用 EXEC 執(zhí)行一條動(dòng)態(tài) SQL 語(yǔ)句,由于每次傳入的參數(shù)不一樣,所以每次生成的 @sql 就不一樣,這樣每執(zhí)行一次SQL SERVER 就必須重新將要執(zhí)行的動(dòng)態(tài) Sql 重新編譯一次 。但是SP_EXECUTESQL 則不一樣,由于將數(shù)值參數(shù)化,要執(zhí)行的動(dòng)態(tài) Sql 永遠(yuǎn)不會(huì)變化,只是傳入的參數(shù)的值在變化,那每次執(zhí)行的時(shí)候就不用重新編譯,速度和效率自然有所提升。
2、靈活性
從上面的例子我們已經(jīng)能夠看出 SP_EXECUTESQL 命令比 EXEC 命令更靈活,因?yàn)樗峁┮粋€(gè)接口,該接口及支持輸入?yún)?shù)也支持輸出參數(shù)。
3、安全性
EXEC 執(zhí)行純動(dòng)態(tài)SQL,執(zhí)行時(shí)可能無(wú)法使用預(yù)編譯的執(zhí)行計(jì)劃,關(guān)鍵是不安全,可以導(dǎo)致 SQL 注入 ,而 SP_EXECUTESQL 執(zhí)行參數(shù)化動(dòng)態(tài) SQL ,執(zhí)行時(shí)能使用預(yù)編譯的執(zhí)行計(jì)劃,而且保存存儲(chǔ)過(guò)程時(shí)就可以確定可以使用的預(yù)編譯的執(zhí)行計(jì)劃,而且最重要的是“安全”,天然免疫SQL 注入
參考資料: EXEC和sp_executesql的區(qū)別 http://www.studyofnet.com/news/439.html
分享名稱:exec存儲(chǔ)過(guò)程做了什么,ORACLE中怎么執(zhí)行存儲(chǔ)過(guò)程
瀏覽路徑:http://chinadenli.net/article32/ejoppc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、外貿(mào)建站、品牌網(wǎng)站制作、企業(yè)網(wǎng)站制作、App開(kāi)發(fā)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)