



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在存储过程中调用外部的动态连接库2002-03-28 ac952_z_cn vckbase 问题的提出:一般我们要根据数据库的纪录变化时,进行某种操作。我们习惯的操作方式是在程序中不停的查询表,判断是否有新纪录。这样耗费的资源就很高,如何提高这种效率,我想在表中创建触发器,在触发器中调用外部动态连接库通过消息或事件通知应用程序就可实现。而master的存储过程中最好能调用外部的动态连接库,我们在触发器中调用master的存储过程即可。说明:VC6需要安装较新的Platform SDK才能顺利编译本代码,VC.Net可以直接编译本代码。另外还需要连接Opends60.lib为了使没有较新Platform SDK的朋友也能编译本例子,已经将VC.Net中的Srv.h和Opends60.lib放到压缩包中程序实现:我们来实现一个存储过程中调用外部的dll(storeproc.dll)的函数SetFileName和addLine。存储过程如下(需放到master库中): CREATE PROCEDURE sp_testdll ASexec sp_addextendedproc SetFileName, storeproc.dll -声明函数exec sp_addextendedproc addLine, storeproc.dll declare szFileName varchar(200) declare szText varchar(200)declare rt intSelect szFileName = c:welcome.txtEXEC rt = SetFileName szFileName -调用SetFileName函数,参数为-szFileName;if rt = 0beginselect szText = welcome 01Exec rt = addLine szText -调用addLineselect szText = welcome 02Exec rt = addLine szTextendexec sp_dropextendedproc SetFileNameexec sp_dropextendedproc addLinedbcc SetFileName(free)dbcc addLine(free)动态连接库的实现:这种动态连接库和普通的有所不同。该动态连接库要放入SQL的执行目录下,或直接放到Window的System32目录下,并重起SQL-Server #include #include/要加入这个.h文件#define XP_NOERROR0#define XP_ERROR1#ifndef _DEBUG#define _DEBUG#endifchar szFileNameMAX_PATH+1;void WriteInfo(const char * str);extern C SRVRETCODE WINAPI SetFileName(SRV_PROC* pSrvProc)WriteInfo(SetFileName start);int paramCount = srv_rpcparams(pSrvProc);if (paramCount != 1)WriteInfo(Param Err start);return XP_ERROR;BYTEbType;unsigned long cbMaxLen;unsigned long cbActualLen;BOOLfNull;int ret = srv_paraminfo(pSrvProc, 1, &bType, &cbMaxLen, &cbActualLen,NULL, &fNull);if (cbActualLen)ZeroMemory(szFileName, MAX_PATH+1);memcpy(szFileName, srv_paramdata(pSrvProc, 1), cbActualLen);WriteInfo(Set filename ok);return (XP_NOERROR);else WriteInfo(Set filename param failed);return XP_ERROR;extern C SRVRETCODE WINAPI addLine(SRV_PROC* pSrvProc)WriteInfo(addline start);int paramCount = srv_rpcparams(pSrvProc);if (paramCount != 1)WriteInfo(addline param err);return XP_ERROR;BYTEbType;unsigned longcbMaxLen;unsigned longcbActualLen;BOOLfNull;boolrt = false;int ret = srv_paraminfo(pSrvProc, 1, &bType, &cbMaxLen, &cbActualLen,NULL, &fNull);if (cbActualLen)int n;char srt3 = 0x0d, 0x0a, 0;char * c = new charcbActualLen + 3;if (!c)return XP_ERROR;ZeroMemory(c, cbActualLen + 3);memcpy(c, srv_paramdata(pSrvProc, 1), cbActualLen);memcpy(c+cbActualLen, srt, 3);HANDLE hf = CreateFile(szFileName, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL);if (hf = INVALID_HANDLE_VALUE)WriteInfo(addline create file err );delete c;return XP_ERROR;WriteInfo(addline create file ok );DWORD dwWt;n = strlen(c);SetFilePointer(hf, 0, NULL, FILE_END);if (WriteFile(hf, c, n, &dwWt, NULL) & dwWt = n)WriteInfo(addline write file ok );rt = true;delete c;CloseHandle(hf);return rt ? XP_NOERROR:XP_ERROR;inline void WriteInfo(const char * str)#ifdef _DEBUGchar srt3 = 0x0d, 0x0a, 0;HANDLE hf = CreateFile(c:storeproc.log, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL);if (hf != INVALID_HANDLE_VALUE)SetFilePointer(hf, 0, NULL, FILE_END);DWORD dwWt;WriteFile(hf, str, strlen(str), &dwWt, NULL);WriteFile(hf, srt, strlen(srt), &dwWt, NULL);CloseHandle(hf);else MessageBox(NULL, Write info err, Message, MB_OK|MB_ICONINFORMATION);#endifBOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpReserved)return TRUE;编译完成后,把动态链接库放到WINNT/System32目录下,启动SQL Server。我们可以打开SQL Server Query Analyzer调用存储过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江西中考数学试卷真题答案解读及备考指导
- 高中化学课程中校园植物化学成分分析与应用研究论文
- 小学生网络互动游戏对认知发展影响分析论文
- 高中语文课程思政教育中的历史教育价值挖掘与传承论文
- 中国医药级酮咯酸氨丁三醇行业市场前景预测及投资价值评估分析报告
- 节电方案与管理制度
- 英文版公司管理制度
- 电工学试题集和试题集及答案
- 小学语文《夜色》课件
- 财务管理学自考历年真题
- NB/T 11123-2023煤矿安全双重预防机制规范
- 内墙抹灰安全技术交底
- 中学美术校本教材《素描》
- 上海市2023年初中毕业物理课程终结性评价指南
- 中国教师发展基金会国家教师科研基金规划全国重点课题实施指南
- (通桥【2018】8370)《铁路桥梁快速更换型伸缩缝安装图》
- “双减”背景下的初中数学课堂教学设计与思考 论文
- 义务教育语文课程标准(2022)测试题带答案(20套)
- (医院护理论文)护理本科生学习适应现状及影响分析
- 保护性约束完整版
- 明源地产erp3.04-费用管理操作手册
评论
0/150
提交评论