2005 如何實作CLR儲存過程來傳回訊息

2021-04-17 02:52:18 字數 1517 閱讀 9359

為了讓大家更了解如何實作

clr儲存過程來傳回訊息,以下我們示範如何使用sqlpipe物件之send方法的第三種多載版本,將查詢結果直接傳送至客戶端:

q       clr儲存過程存放於類別庫專案sendyoudatareader中,它示範如何使用sqlpipe物件的send方法將查詢結果(也就是sqldatareader類別物件)直接傳送至客戶端。特別要再次說明的是,雖然send方法的執行效率略低於executeandsend方法,但是在資料被傳送至客戶端之前,send方法能夠提供最大的彈性來處理資料,換句話說,如果您希望傳送先前通過同處理序(in-process)提供者所執行的查詢結果,或是想要利用sqldatareader的自訂實作來預先處理資料,請使此多載版本的send方法。完成之後的程式**如下所示:

usingmicrosoft.sqlserver.server;

namespacesendyoudatareader}}

}q       請執行如下所示之sql指令,登入元件sendyoudatareader.dll、建立乙個參考所登入之元件sendyoudatareader.dll的儲存過程、然後執行此clr儲存過程,執行結果如圖表1所示:

use北風**;

goifexists(select*fromsys.procedureswhere[name]='sendyoudatareader')

dropproceduresendyoudatareader;

goifexists(select*fromsys.assemblieswhere[name]='sendyoudatareader')

dropassemblysendyoudatareader;

go--登入元件sendyoudatareader.dll

createassemblysendyoudatareader

from

'c:/sql2005demo/ch13/sendyoudatareader/sendyoudatareader/bin/

sendyoudatareader.dll'

withpermission_set=safe;

go--建立乙個會參考所登入之元件sendyoudatareader.dll的儲存過程

createproceduredbo.sendyoudatareader

(@lowersalarymoney,@highersalarymoney

)a***ternalname

sendyoudatareader.[sendyoudatareader.sendyoudatareaderclass].sendyoudatareader;

goexecsp_configure'clrenabled','1';

goreconfigure;

godeclare   @return_valueint

--執行clr儲存過程

execute@return_value=dbo.sendyoudatareader

@lowersalary=50000,

@highersalary=70000;

部署clr儲存過程

alter database ws set trustworthy on use ws go enable clr integration exec sp configure clr enabled 1 goreconfigure goif exists select from sys.object...

帶引數的CLR儲存過程

昨天有學習 簡單建立與佈署clr儲存過程 知道怎樣建立以及佈署至sql中去。下面這個範例是實現clr儲存過程附帶引數 可複製 編寫clr儲存過程,有點像是在程式中直接寫sql語句一樣,不過有細規範與細節不同而已。insus.net覺得clr儲存過程,是一適合一些較穩定與成熟的程式,當佈署之後,一般不...

帶引數的CLR儲存過程

昨天有學習 簡單建立與佈署clr儲存過程 知道怎樣建立以及佈署至sql中去。下面這個範例是實現clr儲存過程附帶引數 可複製 sqlconnection connection new sqlconnection context connection true connection.open sqlc...