欢迎光临!

/*--下面的部分在VB中完成

首先我们先用VB 作一个最简单的组件

工程名称: testSQLCOM
类名: TestMath

''函数,计算两个整数相加的结果
Public Function AddMe(a As Long, b As Long) As Long
   AddMe = a + b
End Function

编译生成后,我们就可以在 Sql Server 中对这个 Com 组件进行调用了
--*/

/*--下面是SQL中对上面DLL的调用--*/

--定义用到的变量
declare @err int,@src varchar(255),@desc varchar(255)
declare @obj int,@re int

--创建调用实例
exec @err=sp_OACreate 'testSQLCOM.TestMath', @obj out
if @err<>0 goto lberr  --如果创建失败,则进行错误处理

--调用DLL中的函数
exec @err=sp_OAMethod @obj,'AddMe',@re out,100,200
if @err<>0 goto lberr  --如果调用错误,则进行错误处理

print '返回的结果是:' + str(@re)

--完成后释放
exec sp_OADestroy @obj

return

lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
select cast(@err as varbinary(4)) as 错误号
  ,@src as 错误源,@desc as 错误描述

 

C#的如下:

1、在vs2005下新建工程ClassLibrary,添加类Compute

 

namespace ClassLibrary
{
    public class Compute
    {
        public Compute()
        {

        }
        public float add(float a,float b)
        {
            return a + b;
        }

    }
}

2.命令注册 ClassLibrary.dll 中包含的所有公共类,并生成和注册类型库 ClassLibrary.tlb

regasm C:\Windows\System32\ClassLibrary.dll /tlb C:\Windows\System32\ClassLibrary.tlb

3.在SQL引用

 


--定义用到的变量
declare @err int,@src varchar(255),@desc varchar(255)
declare @obj int,@re int

--创建调用实例
exec @err=sp_OACreate 'ClassLibrary.Compute', @obj out
if @err<>0 goto lberr  --如果创建失败,则进行错误处理

--调用DLL中的函数
exec @err=sp_OAMethod @obj,'add',@re out,100,200
if @err<>0 goto lberr  --如果调用错误,则进行错误处理

print '返回的结果是:' + str(@re)

--完成后释放
exec sp_OADestroy @obj

return

lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
select cast(@err as varbinary(4)) as 错误号
  ,@src as 错误源,@desc as 错误描述


 

posted on 2009-04-21 09:49  花拉子米  阅读(2499)  评论(2编辑  收藏
版权所有