日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

在易語(yǔ)言中調(diào)用MS SQL SERVER數(shù)據(jù)庫(kù)存儲(chǔ)過程(Transact

 悟靜 2011-12-19

  Microsoft SQL SERVER 數(shù)據(jù)庫(kù)存儲(chǔ)過程,根據(jù)其輸入輸出數(shù)據(jù),籠統(tǒng)的可以分為以下幾種情況或其組合:無(wú)輸入,有一個(gè)或多個(gè)輸入?yún)?shù),無(wú)輸出,直接返回(return)一個(gè)值,通過output參數(shù)返回一個(gè)或多個(gè)值,返回一個(gè)記錄集(recordset)。無(wú)論哪一種情況,無(wú)論輸入輸出參數(shù)多復(fù)雜的存儲(chǔ)過程,都可以在易語(yǔ)言中正確調(diào)用,準(zhǔn)確的傳入?yún)?shù),并獲取正確的輸出數(shù)據(jù)。下面我(liigo)分多種情況介紹在易語(yǔ)言中調(diào)用MS SQL SERVER數(shù)據(jù)庫(kù)存儲(chǔ)過程的詳細(xì)方法,使用數(shù)據(jù)庫(kù)操作支持庫(kù)(eDatabase.fne)。此前多有人說易語(yǔ)言無(wú)法調(diào)用數(shù)據(jù)庫(kù)存儲(chǔ)過程,或咨詢調(diào)用存儲(chǔ)過程的方法,因成此文。

一、調(diào)用“無(wú)輸入輸出數(shù)據(jù)”的存儲(chǔ)過程

  這是最簡(jiǎn)單的情況,執(zhí)行一個(gè)簡(jiǎn)單的SQL語(yǔ)句就OK了,下面直接給出代碼:

  其中,“數(shù)據(jù)庫(kù)連接1”是數(shù)據(jù)庫(kù)操作支持庫(kù)中“數(shù)據(jù)庫(kù)連接”控件的實(shí)例,"exec" 表示調(diào)用存儲(chǔ)過程,"dbproc"為被調(diào)用的存儲(chǔ)過程的名稱。即使存儲(chǔ)過程有返回值,在不想接收返回值的情況下,也可按這種方法調(diào)用。

二、調(diào)用“有一個(gè)或多個(gè)輸入?yún)?shù)”的存儲(chǔ)過程

  一個(gè)輸入?yún)?shù)的情況(其中5為參數(shù)值,跟在存儲(chǔ)過程名稱之后,以空格分隔):

  兩個(gè)輸入?yún)?shù)的情況(其中3和6為參數(shù)值,之間以逗號(hào)分隔):

三、調(diào)用“返回記錄集(recordset)”的存儲(chǔ)過程

  存儲(chǔ)過程最后一條SQL語(yǔ)句為Select語(yǔ)句,通常將返回一個(gè)記錄集(recordset)給調(diào)用者。在易語(yǔ)言中,可通過數(shù)據(jù)庫(kù)操作支持庫(kù)中的“記錄集”控件接收該記錄集,具體代碼如下圖:

易語(yǔ)言調(diào)用MSSQL存儲(chǔ)過程

  核心代碼就是中間淡黃底色加亮的那一行(記錄集1.打開),這行代碼執(zhí)行成功后,記錄集1內(nèi)容就是存儲(chǔ)過程返回的recordset內(nèi)容,通過一個(gè)簡(jiǎn)單的循環(huán)語(yǔ)句可以遍歷所有記錄。實(shí)際使用中,應(yīng)檢查“記錄集1.打開”調(diào)用是否成功,上圖為簡(jiǎn)化起見省略之。

  下文更復(fù)雜的情況,也是用大概相同的代碼,僅中間淡黃底色加亮的那一行有所變化。

四、調(diào)用“返回記錄集(recordset)且有一個(gè)或多個(gè)輸入?yún)?shù)”的存儲(chǔ)過程 

  代碼與前面大致相同,只是調(diào)整了中間一行調(diào)用存儲(chǔ)過程的SQL語(yǔ)句的寫法,前面都有涉及,無(wú)需多言:

五、調(diào)用“直接返回(return)一個(gè)值”的存儲(chǔ)過程

   此類返回值相當(dāng)于易語(yǔ)言子程序的返回值,是在存儲(chǔ)過程代碼內(nèi)部使用 return 指令返回的。欲得到這個(gè)返回值,稍微有點(diǎn)麻煩,且看代碼:

  這里面我(liigo)用了三條SQL語(yǔ)句(嚴(yán)格來(lái)說是Transact-SQL語(yǔ)句),各語(yǔ)句之間以分號(hào)分隔。第一條 "declare @R int" 定義了一個(gè)類型為 int 的變量 @R,第二條 "exec @R = dbproc_r" 調(diào)用存儲(chǔ)過程并把其返回值賦值給變量@R,第三條,"select @R" 生成一個(gè)只有一條記錄和一個(gè)字段的記錄集。代碼執(zhí)行成功后,讀取 記錄集1 第一條記錄第一個(gè)字段就得到了存儲(chǔ)過程的返回值,完整代碼可參考前圖。實(shí)際應(yīng)用中,應(yīng)注意存儲(chǔ)過程返回值類型的匹配。@R改成@abc都無(wú)所謂,但@符號(hào)必須保留(變量或參數(shù)的前綴)。

  如果這個(gè)存儲(chǔ)過程還有輸入?yún)?shù)呢?直接把參數(shù)值附加在存儲(chǔ)過程名稱后面即可,形如:記錄集1.打開 (“declare @R int; exec @R = xproc_r_p2 3,6; select @R”, #SQL語(yǔ)句, )。

六、調(diào)用“通過OUTPUT參數(shù)返回值”的存儲(chǔ)過程

  存儲(chǔ)過程中有一種output參數(shù)既是輸入?yún)?shù)又是輸出參數(shù),它的值可被存儲(chǔ)過程內(nèi)部改寫。大概相當(dāng)于易語(yǔ)言子程序的“參考”參數(shù)。調(diào)用代碼如下:

  仍然是借助一個(gè)變量@P得到輸出參數(shù)的值(注意類型要匹配),然后生成一個(gè)單記錄單字段的記錄集,執(zhí)行成功后通過記錄集1讀取該字段值即可。調(diào)用存儲(chǔ)過程的SQL語(yǔ)句 "exec xproc_o @P output" 中,output表示這個(gè)參數(shù)可以接收返回值。

七、調(diào)用“同時(shí)存在返回值和OUTPUT參數(shù)”的存儲(chǔ)過程

  這是前面兩種情況的綜合運(yùn)用,可借助多個(gè)變量解決,代碼形如:記錄集1.打開 (“declare @R int; declare @P1 int; declare @P2 int; exec @R = xproc_r_p3 100,@P1 output,@P2 output; select @R,@P1,@P2”, #SQL語(yǔ)句, )。

八、思考:調(diào)用“既有OUTPUT參數(shù)(或返回值)又返回記錄集”的存儲(chǔ)過程

  我(liigo)暫時(shí)無(wú)解。

附,相關(guān)測(cè)試用存儲(chǔ)過程代碼:

全文完。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多