libraryproject1;
uses
Windows,
SysUtils,
MSODSApi;
...
{$R
*
.res}
FunctionGetParamStr(pSrvProc:SRV_PROC;Index:integer;VarParam:String):integer;
var
PType:Byte;
cbMaxLen,ParaLen:DWORD;
IsNULL:BOOL;
begin
Result:
=
NO_ERROR;
srv_paraminfo(pSrvProc,index,@PType,@cbMaxLen,@ParaLen,NIL,@IsNULL);
if
PType
in
[SRVTEXT,SRVVARCHAR,SRVCHAR,SRVNTEXT,
SRVBIGVARCHAR,SRVBIGCHAR,SRVNVARCHAR,SRVNCHAR]then
begin
Param:
=
''
;
if
ParaLen
>
0
thenbegin
SetLength(Param,ParaLen);
srv_paraminfo(pSrvProc,index,@PType,@cbMaxLen,@ParaLen,@Param[
1
],@IsNULL);
end;
end
else
begin
Result:
=
-
1
;
end;
end;
FunctionEpPackFile(pSrvProc:SRV_PROC):integer;cdecl;
var
ls1,ls2,ls3:String;
n:integer;
begin
Result:
=
1
;
n:
=
srv_rpcparams(pSrvProc);
if
n
<>
3
thenbegin
//
不是3个参数
end;
if
(GetParamStr(pSrvProc,
1
,ls1)
<>
NO_ERROR)thenbegin
//
不是字符串
end;
if
(GetParamStr(pSrvProc,
2
,ls2)
<>
NO_ERROR)thenbegin
//
不是字符串
end;
if
(GetParamStr(pSrvProc,
3
,ls3)
<>
NO_ERROR)thenbegin
//
不是字符串
end;
n:
=
Length(ls1);
srv_describe(pSrvProc,
1
,
'
参数
'
,SRV_NULLTERM,SRVBIGVARCHAR,
n,SRVBIGVARCHAR,n,NIL);
srv_setcoldata(pSrvProc,
1
,@ls1[
1
]);
srv_sendrow(pSrvProc);
srv_setcoldata(pSrvProc,
1
,@ls2[
1
]);
srv_sendrow(pSrvProc);
srv_setcoldata(pSrvProc,
1
,@ls3[
1
]);
srv_sendrow(pSrvProc);
srv_senddone(pSrvProc,(SRV_DONE_COUNTorSRV_DONE_MORE),
0
,
1
);
end;
exports
EpPackFileName
'
xp_EpPackFile
'
;
begin
end.
编译后放入binn目录,在sql中添加并测试,代码如下:
Use
Master;
IF
object_id
(
'
xp_EpPackFile
'
)
IS
NOT
NULL
EXEC
sp_dropextendedproc
'
xp_EpPackFile
'
;
EXEC
sp_addextendedproc
'
xp_EpPackFile
'
,
'
project1.dll
'
;
EXEC
master..xp_EpPackFile
'
aa
'
,
'
bb
'
,
'
cc
'
;
EXEC
sp_dropextendedproc
'
xp_EpPackFile
'
;
DBCC
SPEncrypt(FREE);
分享到:
相关推荐
4.5.3 体系结构的例子 94 4.5.4 子窗体TChildForm 94 4.5.5 数据库基础模式窗体TDBMode- Form 96 4.5.6 数据库导航/状态窗体TDBNavstat- Form 97 4.5.7 使用框架进行应用程序结构 设计 102 4.6 一些项目管理的...
27910.4 小结 289第11章 使用SQL结构化查询语句 29011.1 SQL语句简介 29011.2 SQL在Delphi中的应用 29111.3 小结 302第12章 数据库应用程序实例 30312.1 程序实现的功能及总体结构设计 30312.1.1 应用程序的功能划分...
12.3.1 存储过程 252 12.3.2 触发器 252 12.4 本地缓存 253 第13章 Web与数据库 260 13.1 CGI的工作原理 260 13.2 Delphi对CGI的支持 260 13.3 创建Web应用程序 261 13.4 表单 262 13.5 把信息保存到数据库 264 13.6...
12.3.1 存储过程 252 12.3.2 触发器 252 12.4 本地缓存 253 第13章 Web与数据库 260 13.1 CGI的工作原理 260 13.2 Delphi对CGI的支持 260 13.3 创建Web应用程序 261 13.4 表单 262 13.5 把信息保存到数据库 264 13.6...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
bootcfg /rebuild 重复全部 Windows 安装过程并允许用户选择要添加的内容。 注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 扫描用于 Windows 安装的...
系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...
系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...
系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) IOCP 完成端口编程 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例...
系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) IOCP 完成端口编程 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例...
系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) IOCP 完成端口编程技术 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等...
系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...