怎么利用CLR存儲過程傳回信息,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)長期為成百上千家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為海城企業(yè)提供專業(yè)的成都網站建設、成都做網站,海城網站改版等技術服務。擁有10年豐富建站經驗和眾多成功案例,為您定制開發(fā)。
CLR存儲過程存放于類別庫項目SendYouDataReader 中,它示范如何使用 SqlPipe 對象的 Send 方法將查詢結果(也就是 SqlDataReader 類別對象)直接傳送至客戶端。
特別要再次說明的是,雖然 Send 方法的執(zhí)行效率略低于ExecuteAndSend 方法,但是在數(shù)據(jù)被傳送至客戶端之前,Send 方法能夠提供***的彈性來處理數(shù)據(jù),換句話說,如果您希望傳送先前通過同處理序(In-Process)提供者所執(zhí)行的查詢結果,或是想要利用 SqlDataReader 的自訂實作來預先處理數(shù)據(jù),請使此多載版本的 Send 方法。完成之后的程序代碼如下所示:
using Microsoft.SqlServer.Server; namespace SendYouDataReader { public class SendYouDataReaderClass { [Microsoft.SqlServer.Server.SqlProcedure()] public static void SendYouDataReader(decimal LowerSalary, decimal HigherSalary) { SqlCommand cmd; SqlDataReader dr; // 使用內容連接來進行連接。 using (SqlConnection connection = new SqlConnection("context connection=true")) { connection.Open(); cmd = new SqlCommand( "SELECT 員工編號,姓名,目前薪資 FROM dbo.章立民研究室 " + "WHERE 目前薪資 BETWEEN @LowerSalary AND @HigherSalary", connection); cmd.Parameters.AddWithValue("@LowerSalary", LowerSalary); cmd.Parameters.AddWithValue("@HigherSalary", HigherSalary); dr = cmd.ExecuteReader(); // 呼叫 SqlPipe 對象的 Send 方法將查詢結果直接傳送給客戶端 SqlContext.Pipe.Send(dr); } } } }
請執(zhí)行如下所示之 SQL 指令,登錄組件 SendYouDataReader.dll、建立一個參考所登錄之組件 SendYouDataReader.dll 的CLR存儲過程、然后執(zhí)行此 CLR存儲過程:
USE GO IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'SendYouDataReader') DROP PROCEDURE SendYouDataReader; GO IF EXISTS (SELECT * FROM sys.assemblies WHERE [name] = 'SendYouDataReader') DROP ASSEMBLY SendYouDataReader; GO -- 登錄組件SendYouDataReader.dll CREATE ASSEMBLY SendYouDataReader FROM 'C:\SQL2005Demo\CH13\SendYouDataReader\SendYouDataReader\bin\ SendYouDataReader.dll' WITH permission_set = Safe; GO -- 建立一個會參考所登錄之組件SendYouDataReader.dll 的CLR存儲過程 CREATE PROCEDURE dbo.SendYouDataReader ( @LowerSalary money, @HigherSalary money ) AS EXTERNAL NAME SendYouDataReader.[SendYouDataReader.SendYouDataReaderClass].SendYouDataReader; GO EXEC sp_configure 'clr enabled', '1'; GO RECONFIGURE; GO DECLARE @return_value int -- 執(zhí)行CLR 存儲過程 EXECUTE @return_value = dbo.SendYouDataReader @LowerSalary = 50000, @HigherSalary = 70000;
關于怎么利用CLR存儲過程傳回信息問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。
標題名稱:怎么利用CLR存儲過程傳回信息
文章出自:http://aaarwkj.com/article46/ihhihg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網站、ChatGPT、品牌網站建設、品牌網站設計、虛擬主機、服務器托管
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)