ActiveX Server Object

存储过程

sp_oacreate 建立 ActiveX 对象
sp_oamethod 执行方法
sp_oasetproperty 设置属性
sp_OAGetProperty 取属性值
sp_OADestroy 释放对象
sp_OAGetErrorInfo 取错误信息

sp_oacreate 存储过程

建立 ActiveX 组件,对象存在输出参数 object 中。

sp_oacreate ProgID varchar IN, ObjPointerToBeReturned int OUT [, @OLE_server_type int]
参数 意义
ProgID 字符串,类型名称,如 'Excel.Application'
ObjPointerToBeReturned 整数值,存储对象
返回值 整数值,错误代码,0 表示成功

sp_OAGetProperty 存储过程

取属性值

sp_OAGetProperty ObjPointer int IN, PropertyName varchar IN [, @returnval <any> OUT [, additional indexing IN params]]
参数 意义
ObjPointer  整数值,ActiveX 对象
PropertyName  字符串,属性名称
returnval  存储属性值的变量
返回值 整数值,错误代码,0 表示成功

sp_OAMethod 存储过程

执行过程

sp_OAMethod ObjPointer int IN, MethodName varchar IN [, @returnval <any> OUT [, additional IN, OUT, or BOTH params]]
参数 意义
ObjPointer  整数值,ActiveX 对象
MethodName  字符串,方法名称
returnval  存储方法返回值的变量
additional  其他参数
返回值 整数值,错误代码,0 表示成功

sp_OAGetErrorInfo 存储过程

取错误信息。

sp_OAGetErrorInfo object, src out, desc out
参数 意义
object 整数值,ActiveX 对象
src 字符串,
desc 错误描述

sp_OADestroy 存储过程

释放对象

sp_OADestroy ObjPointerToBeDestroyed int IN

示例

建立 TC.Encode 对象,调用方法 MD5Encode 加密字符串。

分别是一个自定义函数和自定义存储过程。

CREATE FUNCTION [dbo].[md5func] (@para varchar(255) )
RETURNS varchar(255)  AS  
BEGIN 

declare @Object int        --OLE对象
declare @hr integer        --对象返回值
declare @mStr varchar(255) --调用返回值
declare @Src varchar(255), @Desc varchar(255) --错误返回值

exec @hr = sp_OACreate 'TC.Encode' , @Object OUT   
if @hr<>0
begin
   exec @hr=sp_OADestroy @object
   return ''
end

exec @hr = sp_OAMethod @object, 'MD5Encode', @mStr out , @para
if @hr<>0
begin
    exec @hr=sp_OADestroy @object
    return ''
end 

exec @hr=sp_OADestroy @object
if @hr<>0
begin
   return ''
end

return @mstr
END
CREATE PROCEDURE [dbo].[md5encode] 
@para varchar(255)
AS
declare @Object int        --OLE对象
declare @hr integer        --对象返回值
declare @mStr varchar(255) --调用返回值
declare @Src varchar(255), @Desc varchar(255) --错误返回值

exec @hr = sp_OACreate 'TC.Encode' , @Object OUT   
if @hr<>0
begin
   exec sp_OAGetErrorInfo @object, @src OUT, @desc OUT
   SELECT hr=convert(varbinary(4),@hr), Source=@Src,    Description=@Desc
   return
end

exec @hr = sp_OAMethod @object, 'MD5Encode', @mStr out , @para
if @hr<>0
begin
    exec sp_OAGetErrorInfo @object, @src OUT, @desc OUT
    SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
    return
end 
else
    select md5=@mStr

exec @hr=sp_OADestroy @object
if @hr<>0
begin
   exec sp_OAGetErrorInfo @object, @src OUT, @desc OUT
   SELECT hr=convert(varbinary(4),@hr), Source=@Src,    Description=@Desc
   return
end	
GO