為什么在存儲過程中用OLEDB方式不能返回記錄集
更新時間:2006年06月23日 00:00:00 作者:
為什么在存儲過程中用OLEDB方式不能返回記錄集?
我曾寫過一段程序,是對臨時表操作的(主要功能是取出每種分類的TOP10條記錄)。
該存儲過程使用ODBC連接數(shù)據(jù)庫時正常,能夠得到正確的結(jié)果。但在使用oledb方式連接時,卻不能返回記錄集,而一旦操作返回記錄集時就出現(xiàn)錯誤提示:
ADODB.Recordset 錯誤 '800a0e78'
The operation requested by the application is not allowed if the object is closed.
令我百思不得其解。這是為什么?
這是因?yàn)镺LEDB與ODBC存在著一個差別,就是,當(dāng)ASP向ODBC取記錄集時,ODBC過濾了由create table
或insert into產(chǎn)生一些只占位置但不能進(jìn)行任何操作的記錄集,而當(dāng)ASP向OLEDB取記錄集時,OLEDB并
沒有將這些記錄集過濾掉。所以,我們應(yīng)在存儲過程中不希望返回記錄集前就執(zhí)行set nocount on,
禁止存儲過程返回記錄集;而要返回記錄集時,就要先執(zhí)行set nocount off。這樣,問題就會解決了。
我曾寫過一段程序,是對臨時表操作的(主要功能是取出每種分類的TOP10條記錄)。
該存儲過程使用ODBC連接數(shù)據(jù)庫時正常,能夠得到正確的結(jié)果。但在使用oledb方式連接時,卻不能返回記錄集,而一旦操作返回記錄集時就出現(xiàn)錯誤提示:
ADODB.Recordset 錯誤 '800a0e78'
The operation requested by the application is not allowed if the object is closed.
令我百思不得其解。這是為什么?
這是因?yàn)镺LEDB與ODBC存在著一個差別,就是,當(dāng)ASP向ODBC取記錄集時,ODBC過濾了由create table
或insert into產(chǎn)生一些只占位置但不能進(jìn)行任何操作的記錄集,而當(dāng)ASP向OLEDB取記錄集時,OLEDB并
沒有將這些記錄集過濾掉。所以,我們應(yīng)在存儲過程中不希望返回記錄集前就執(zhí)行set nocount on,
禁止存儲過程返回記錄集;而要返回記錄集時,就要先執(zhí)行set nocount off。這樣,問題就會解決了。
相關(guān)文章
javascript asp教程第十三課--include文件
javascript asp教程第十三課--include文件...2007-03-03ASP字符串大寫轉(zhuǎn)換成小寫 ASP小寫轉(zhuǎn)換成大寫 ucase lcase
字符串大寫字面轉(zhuǎn)換成小寫字面或者小寫字面轉(zhuǎn)換成大寫字面,ASP(特指VBS)里自帶了兩個函數(shù)2009-06-06ASP Recordset 分頁顯示數(shù)據(jù)的方法(修正版)
最近給別人培訓(xùn)asp 分頁,對于asp的入門新手來說,最簡單的分頁就是用Recordset 分頁技術(shù)了,他主要用于一些少量數(shù)據(jù)的分頁,對于新手學(xué)習(xí)是最好的了,對于大量數(shù)據(jù)分頁不建議用。2008-11-11