1 可實現功能區別
sql 存儲過程:由(select insert update delete)關鍵字和過程控制關鍵字(while set if else cursor goto …)組成相關sql語句,來實現邏輯和流程控制
和返回信息給客戶端
CLR存儲過程:可實現sql存儲過程中,所有的功能外,還可通過調用.net api實現更復雜的功能,例 發送郵件 監控系統運行狀況,訪問網絡…
2 運行效率區別
sql 存儲過程:對于一些計算和字符串處理等特殊操作,需要使用多重腳本才能實現相應的功能,增加計算的復雜度,
對于數據獲取上,由于sql存儲過程直接運行在DB服務器上,所以獲取數據的效率高于CLR存儲過程。
CLR 觸發器:可以調用.net豐富的API 函數庫,補充sql查詢語言表達能力,處理一些特殊的計算,clr存儲法在一些復雜的邏輯處理上擁有更好的性能。
3 提交sql方式區別
3.1 數據返回方式不同
sql 存儲過程:只需一個sql腳本就可以運行相關操作,就可以將數據返回給客戶端
clr存儲過程:需要通過sqlpipe對象將結果返回客戶端
3.2 提交sql語句的方式不同
sql存儲過程: 直接同DB服務器更新交互
clr存儲過程:需要采用ado.net的方式提交sql至db服務器