這個(gè)存儲過程是計(jì)算 MD5 值的,可以用來進(jìn)行密碼認(rèn)證加密等。
SQL Server 的擴(kuò)展存儲過程 (Extended Stored Procedure, 簡稱 XP) 是通過在 MSSQL 數(shù)據(jù)庫注冊封裝在 .dll 里面的函數(shù)實(shí)現(xiàn)的,
而這個(gè) .dll 應(yīng)該按照 M$ 提供的規(guī)則, 并且要連接 MSSQL 的庫文件。由于 C++ Builder 自帶的 MSSQL 庫文件 OPENDS60.LIB 比較舊,
本文提供新版本的 OPENDS60.LIB 庫文件, 支持 MSSQL 2000 版本的。
【安裝方法】
① 通過執(zhí)行 SQL 語句注冊存儲過程:
打開 Master 數(shù)據(jù)庫,然后執(zhí)行下面 SQL 語句
EXEC sp_addextendedproc ’xp_md5’, ’d:\pathname\xp_md5.dll’
如果注冊的文件不包含路徑,只有文件名,MSSQL會在這個(gè)文件夾里面找這個(gè).dll
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
② 創(chuàng)建用來支持 select 語句的 MD5 函數(shù) fn_md5
打開想要執(zhí)行這個(gè)存儲過程的用戶數(shù)據(jù)庫,執(zhí)行下面的 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
【使用方法】
① 直接執(zhí)行, 由于 xp_md5 在 master 數(shù)據(jù)庫里面, 所以前面必須有 master.
EXEC master.dbo.xp_md5 ’Hello world!’
② 通過 fn_md5 支持 select 語句, 這個(gè)函數(shù)在用戶當(dāng)前使用的數(shù)據(jù)庫里面.
SELECT dbo.fn_md5(’Hello world!’)
【程序說明】
xp_md5.bpr 存儲過程 C++ Builder 6.0 工程文件
OPENDS60.LIB 由于 C++ Builder 自帶的文件比較舊,支持 MSSQL 7 的,這個(gè)程序帶了一個(gè) OPENDS60.LIB 文件,支持 MSSQL 2000
md5.h Christophe Devine 原作,沒做任何修改
md5.cpp Christophe Devine 原作,沒做任何修改
xp_md5_main.cpp 存儲過程主程序文件,根據(jù) Vic Mackey 的存儲過程修改的
在創(chuàng)建工程的時(shí)候用 DLL 向?qū)删涂梢粤?,沒有特殊的要求,存儲過程函數(shù)需要按規(guī)定的格式:
__declspec(dllexport) SRVRETCODE WINAPI xpname(SRV_PROC* pSrvProc)
其中 xpname 是存儲過程的名,其他的都是規(guī)定的格式不能變
另外存儲過程 .dll 文件也必須包含這個(gè)函數(shù):
__declspec(dllexport) ULONG WINAPI __GetXpVersion()
詳細(xì)的內(nèi)容請下載源程序看,比較簡單。
SQL Server 的擴(kuò)展存儲過程 (Extended Stored Procedure, 簡稱 XP) 是通過在 MSSQL 數(shù)據(jù)庫注冊封裝在 .dll 里面的函數(shù)實(shí)現(xiàn)的,
而這個(gè) .dll 應(yīng)該按照 M$ 提供的規(guī)則, 并且要連接 MSSQL 的庫文件。由于 C++ Builder 自帶的 MSSQL 庫文件 OPENDS60.LIB 比較舊,
本文提供新版本的 OPENDS60.LIB 庫文件, 支持 MSSQL 2000 版本的。
【安裝方法】
① 通過執(zhí)行 SQL 語句注冊存儲過程:
打開 Master 數(shù)據(jù)庫,然后執(zhí)行下面 SQL 語句
EXEC sp_addextendedproc ’xp_md5’, ’d:\pathname\xp_md5.dll’
如果注冊的文件不包含路徑,只有文件名,MSSQL會在這個(gè)文件夾里面找這個(gè).dll
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
② 創(chuàng)建用來支持 select 語句的 MD5 函數(shù) fn_md5
打開想要執(zhí)行這個(gè)存儲過程的用戶數(shù)據(jù)庫,執(zhí)行下面的 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
【使用方法】
① 直接執(zhí)行, 由于 xp_md5 在 master 數(shù)據(jù)庫里面, 所以前面必須有 master.
EXEC master.dbo.xp_md5 ’Hello world!’
② 通過 fn_md5 支持 select 語句, 這個(gè)函數(shù)在用戶當(dāng)前使用的數(shù)據(jù)庫里面.
SELECT dbo.fn_md5(’Hello world!’)
【程序說明】
xp_md5.bpr 存儲過程 C++ Builder 6.0 工程文件
OPENDS60.LIB 由于 C++ Builder 自帶的文件比較舊,支持 MSSQL 7 的,這個(gè)程序帶了一個(gè) OPENDS60.LIB 文件,支持 MSSQL 2000
md5.h Christophe Devine 原作,沒做任何修改
md5.cpp Christophe Devine 原作,沒做任何修改
xp_md5_main.cpp 存儲過程主程序文件,根據(jù) Vic Mackey 的存儲過程修改的
在創(chuàng)建工程的時(shí)候用 DLL 向?qū)删涂梢粤?,沒有特殊的要求,存儲過程函數(shù)需要按規(guī)定的格式:
__declspec(dllexport) SRVRETCODE WINAPI xpname(SRV_PROC* pSrvProc)
其中 xpname 是存儲過程的名,其他的都是規(guī)定的格式不能變
另外存儲過程 .dll 文件也必須包含這個(gè)函數(shù):
__declspec(dllexport) ULONG WINAPI __GetXpVersion()
詳細(xì)的內(nèi)容請下載源程序看,比較簡單。