zoukankan      html  css  js  c++  java
  • SQLSERVER调用DLL程序

    在SQL Server中调用dll分为两个步骤

    1.创建一个dll文件(dll文件分成3种类型,讲其中一种)

    2.把dll文件放进SQL Server的程序集中。然后定义一个Function,就可以通过该Function来引用dll中的函数。

    1创建一个dll文件

      1.1点击“文件”->“新建”->“项目”->类库,把命名空间改成TestDLL,添加如下代码

    (框架必须改为.NET3.5及3.5以下,因为SQL Server 2008只是支持.NET 3.5及一下,.NET 4.0是2010年发布的,不支持也很正常,C#方法必须是静态方法,因为静态函数不用实例化类就可以调用)

    创建dll程序(求和、小写字母转换成大写字母)

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace TestDLL
    {
        public class Class1
        {
            //求0到n的和当n小于0时返回0
            //方法必须为静态方法,因为静态函数不用实例化类就可以调用
            public static int Calc(int n)
            {
                int sum;
                sum = 0;
                if (n>=0)
                {
                    for (int i = 0; i <= n; i++)
                    {
                        sum = sum + i;
                    }
                    return sum;
                }
                else
                {
                    return 0;
                }           
            }
            //将字符串转换成大写
            public static string Todaxie(string s)
            {
                return s.ToUpper();
            }
        }
    }

    1.2右击“项目”,点击”生成“或者直接按F6

      1.3右击“项目”,点击“在文件资源管理系统中打开文件夹”,点击bin->debug,然后就会看到一个TestDLL.dll文件。

    2在SQL中引用dll文件

      2.1允许SQL Server允许运行用户程序集

         在SQL Server中运行如下代码:

    EXEC sp_configure 'clr enabled' , '1';  --0代表不允许,1代表运行
    RECONFIGURE; 

    其中TestDll是你在数据库中为这个程序集起的名字。

          2.3创建一个Function,使用该dll文件

    使用如下SQL语句

    --转换成大写字母
    create FUNCTION [dbo].[ToUpper](@InputString [nvarchar](500))
    RETURNS [nvarchar](200) 
    WITH EXECUTE AS CALLER
    AS 
    EXTERNAL NAME [TestDLL].[TestDLL.Class1].[Todaxie]
    GO
    --求和函数
    CREATE FUNCTION [dbo].[Calc](@n int)  --该函数名字
    RETURNS int  --返回类型
    WITH EXECUTE AS CALLER
    AS 
    EXTERNAL NAME [TestDLL].[TestDLL.Class1].[Calc]  --调用c#程序集
    GO

    注意一下的那几个单词。

    TestDLL是指你程序集中dll的名称。

    TestDLL是指dll文件中那个类的命名空间

    Class1是指dll文件中那个类的类名

    Todaxie是指dll文件中那个被调用的静态方法

    最后,便可以这样来调用该函数

    print dbo.ToUpper('abc')   --输出的结果为ABC 
    SELECT dbo.Calc(3)       --输出的结果为6
  • 相关阅读:
    Unity 自定义日志保存
    一万字详解 Redis Cluster Gossip 协议
    第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛非官方题解
    数组小游戏---火把萤石
    11个编程接单的网站,你有技术就有收入,有收入就有女朋友《男盆友》
    逆向工程,调试Hello World !程序(更新中)
    魔改一波合成大西瓜!代码已开源~
    如何使用C++做个简单推箱子游戏
    第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛非官方题解
    zookeeper应用
  • 原文地址:https://www.cnblogs.com/xiaozhi1236/p/5730468.html
Copyright © 2011-2022 走看看