qq三国十阶元神技能:存储过程中调用C#封装的DLL - World.Hello().ToString(); -...

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 10:47:05
   return retVal;
  }  
 }
注意这个Guid我们在存储过程中引用要用到这个Guid.

为方便可能在多处需要调用,我们专门写一个存储过程
如下:

CREATE  PROCEDURE  spu_ConvertFileTimeToNormal
 @ticks BIGINT,
 @returnval  varchar(40) output
 AS 

DECLARE @src varchar(255)
DECLARE @desc varchar(255)


DECLARE @object int
DECLARE @hr int
EXEC @hr = sp_OACreate '{729ba6af-3eff-4b75-b43b-d951a190dbe6}',@object OUT

IF @hr = 0 --如果创建对象成功
  BEGIN 
  EXEC @hr = sp_OAMethod @object,'ConvertTime',@returnval OUT,@ticks
      print @returnval
      print @hr
  if(@hr <> 0)
   BEGIN
       EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
    SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc 
   END
   
  END

 ELSE
  BEGIN
   --print  @hr
   print 'Create Object ConvertTime failed'
 
     EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
     SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
     RETURN
  END

 EXEC @hr = sp_OADestroy @object

 IF @hr <> 0
 BEGIN
    EXEC sp_OAGetErrorInfo @object
    RETURN
 END

GO

这个时候我们还差最后一步注册DLL了
在.net 命令行下输入 regasm -codebase path

好了,现在我们就可以在其他存储过程中调用这个存储过程返回正常的时间了.
给个小例子:
EXEC spu_ConvertFileTimeToNormal @CreateTime,@NormalTime OUT    
@CreateTime:FileTime格式
@NormalTime :正常的时间格式字符串(spu_ConvertFileTimeToNormal 存储过程返回值)

这个简单的小例子说明了我们怎么样在存储过程中调用DLL
是不是你解决问题又多了一个选择了呢?