這個存儲過程是計算 MD5 值的,可以用來進行密碼認證加密等。
SQL Server 的擴展存儲過程 (Extended Stored Procedure, 簡稱 XP) 是通過在 MSSQL 數據庫注冊封裝在 .dll 裡面的函數實現的,
而這個 .dll 應該按照 M$ 提供的規則, 並且要連接 MSSQL 的庫文件。由於 C++ Builder 自帶的 MSSQL 庫文件 OPENDS60.LIB 比較舊,
本文提供新版本的 OPENDS60.LIB 庫文件, 支持 MSSQL 2000 版本的。
--------------------------------------------------------------------------------
【安裝方法】
① 通過執行 SQL 語句注冊存儲過程:
打開 Master 數據庫,然後執行下面 SQL 語句
EXEC sp_addextendedproc 'xp_md5', 'd:\pathname\xp_md5.dll'
如果注冊的文件不包含路徑,只有文件名,MSSQL會在這個文件夾裡面找這個.dll
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
② 創建用來支持 select 語句的 MD5 函數 fn_md5
打開想要執行這個存儲過程的用戶數據庫,執行下面的 SQL:
CREATE FUNCTION fn_md5 (@string VARCHAR(8000))
RETURNS CHAR(32) AS
BEGIN
DECLARE @hash CHAR(32)
EXEC master.dbo.xp_md5 @string, @hash OUTPUT
RETURN @hash
END
【使用方法】
① 直接執行, 由於 xp_md5 在 master 數據庫裡面, 所以前面必須有 master.
EXEC master.dbo.xp_md5 'Hello world!'
② 通過 fn_md5 支持 select 語句, 這個函數在用戶當前使用的數據庫裡面.
SELECT dbo.fn_md5('Hello world!')
【程序說明】
xp_md5.bpr 存儲過程 C++ Builder 6.0 工程文件
OPENDS60.LIB 由於 C++ Builder 自帶的文件比較舊,支持 MSSQL 7 的,這個程序帶了一個 OPENDS60.LIB 文件,支持 MSSQL 2000
md5.h Christophe Devine 原作,沒做任何修改
md5.cpp Christophe Devine 原作,沒做任何修改
xp_md5_main.cpp 存儲過程主程序文件,根據 Vic Mackey 的存儲過程修改的
在創建工程的時候用 DLL 向導生成就可以了,沒有特殊的要求,存儲過程函數需要按規定的格式:
__declspec(dllexport) SRVRETCODE WINAPI xpname(SRV_PROC* pSrvProc)
其中 xpname 是存儲過程的名,其他的都是規定的格式不能變
另外存儲過程 .dll 文件也必須包含這個函數:
__declspec(dllexport) ULONG WINAPI __GetXpVersion()
詳細的內容請下載源程序看,比較簡單。
函數的說明請參閱 MSDN 的這裡:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odssql/ods_6_ref_02_8k2t.asp