Microsoft SQL SERVER 數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程,根據(jù)其輸入輸出數(shù)據(jù),籠統(tǒng)的可以分為以下幾種情況或其組合:無(wú)輸入,有一個(gè)或多個(gè)輸入?yún)?shù),無(wú)輸出,直接返回(return)一個(gè)值,通過(guò)output參數(shù)返回一個(gè)或多個(gè)值,返回一個(gè)記錄集(recordset)。無(wú)論哪一種情況,無(wú)論輸入輸出參數(shù)多復(fù)雜的存儲(chǔ)過(guò)程,都可以在易語(yǔ)言中正確調(diào)用,準(zhǔn)確的傳入?yún)?shù),并獲取正確的輸出數(shù)據(jù)。下面我(liigo)分多種情況介紹在易語(yǔ)言中調(diào)用MS SQL SERVER數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的詳細(xì)方法,使用數(shù)據(jù)庫(kù)操作支持庫(kù)(eDatabase.fne)。此前多有人說(shuō)易語(yǔ)言無(wú)法調(diào)用數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程,或咨詢調(diào)用存儲(chǔ)過(guò)程的方法,因成此文。
一、調(diào)用“無(wú)輸入輸出數(shù)據(jù)”的存儲(chǔ)過(guò)程
這是最簡(jiǎn)單的情況,執(zhí)行一個(gè)簡(jiǎn)單的SQL語(yǔ)句就OK了,下面直接給出代碼:
view plaincopy to clipboardprint?
數(shù)據(jù)庫(kù)連接1.執(zhí)行SQL (“exec dbproc”)
其中,“數(shù)據(jù)庫(kù)連接1”是數(shù)據(jù)庫(kù)操作支持庫(kù)中“數(shù)據(jù)庫(kù)連接”控件的實(shí)例,"exec" 表示調(diào)用存儲(chǔ)過(guò)程,"dbproc"為被調(diào)用的存儲(chǔ)過(guò)程的名稱。即使存儲(chǔ)過(guò)程有返回值,在不想接收返回值的情況下,也可按這種方法調(diào)用。
二、調(diào)用“有一個(gè)或多個(gè)輸入?yún)?shù)”的存儲(chǔ)過(guò)程
一個(gè)輸入?yún)?shù)的情況(其中5為參數(shù)值,跟在存儲(chǔ)過(guò)程名稱之后,以空格分隔):
view plaincopy to clipboardprint?
數(shù)據(jù)庫(kù)連接1.執(zhí)行SQL (“exec dbproc_p1 5”)
兩個(gè)輸入?yún)?shù)的情況(其中3和6為參數(shù)值,之間以逗號(hào)分隔):
view plaincopy to clipboardprint?
數(shù)據(jù)庫(kù)連接1.執(zhí)行SQL (“exec dbproc_p2 3,6”)
三、調(diào)用“返回記錄集(recordset)”的存儲(chǔ)過(guò)程
存儲(chǔ)過(guò)程最后一條SQL語(yǔ)句為Select語(yǔ)句,通常將返回一個(gè)記錄集(recordset)給調(diào)用者。在易語(yǔ)言中,可通過(guò)數(shù)據(jù)庫(kù)操作支持庫(kù)中的“記錄集”控件接收該記錄集,具體代碼如下圖:
核心代碼就是中間淡黃底色加亮的那一行(記錄集1.打開),這行代碼執(zhí)行成功后,記錄集1內(nèi)容就是存儲(chǔ)過(guò)程返回的recordset內(nèi)容,通過(guò)一個(gè)簡(jiǎn)單的循環(huán)語(yǔ)句可以遍歷所有記錄。實(shí)際使用中,應(yīng)檢查“記錄集1.打開”調(diào)用是否成功,上圖為簡(jiǎn)化起見省略之。
下文更復(fù)雜的情況,也是用大概相同的代碼,僅中間淡黃底色加亮的那一行有所變化。
四、調(diào)用“返回記錄集(recordset)且有一個(gè)或多個(gè)輸入?yún)?shù)”的存儲(chǔ)過(guò)程
代碼與前面大致相同,只是調(diào)整了中間一行調(diào)用存儲(chǔ)過(guò)程的SQL語(yǔ)句的寫法,前面都有涉及,無(wú)需多言:
新聞熱點(diǎn)
疑難解答
圖片精選