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 = ;
if (n>=)
{
for (int i = ; i <= n; i++)
{
sum = sum + i;
}
return sum;
}
else
{
return ;
}
}
//将字符串转换成大写
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' , ''; --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
SQLSERVER调用DLL程序的更多相关文章
- C/C++:Windows编程—调用DLL程序的2种方法(转载)
文章为转载,原文出处https://blog.csdn.net/qq_29542611/article/details/86618902 前言先简单介绍下DLL.DLL:Dynamic Link Li ...
- DLL程序的创建步骤和測试程序
首先,创建DLL程序 然后,加入一个导出类 比如: //Test.h #pragma once class AFX_EXT_CLASS Test { public: Test(void); ~Te ...
- C#程序实现动态调用DLL的研究(转)
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
- C#程序实现动态调用DLL的研究[转]
摘 要: 在< csdn 开发高手> 2004 年第 03 期中的<化功大法——将 DLL 嵌入 EXE >一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在 ...
- C#程序实现动态调用DLL的研究
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
- 浅谈C++调用C#的DLL程序方法
把C#编译成DLL或者Axtive控件,再由C调用!比如使用C++调用C#的DLL. SwfDotNet是.net下输出flash的类库.SwfDotNet是C#编写的,作者的C#水平,真是令我佩服. ...
- 当程序调用dll时获取dll路径,DLL中获取自身的句柄
当程序调用dll时,获取dll路径的方法: HMODULE hMod = GetModuleHandle(_T("axload.dll")); if (hMod != NULL) ...
- SQL点滴15—在SQL Server 2008中调用C#程序
原文:SQL点滴15-在SQL Server 2008中调用C#程序 T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可 ...
- Window系统命令行调用控制面板程序
Window系统命令行调用控制面板程序 control.exe /name microsoft.folderoptions 启动资源管理器的 文件夹属性 选项卡 control.exe /name M ...
随机推荐
- Linux下程序对拍_C++ (付费编号1001)
本博客为精品博客,涉及利益问题,严禁转载,违者追究法律责任 一.对拍背景 对拍是一种十分实用的检查程序正确性的手段,在比赛时广泛使用 我们一般对拍两个程序,一个是自己不确定正确性的高级算法,另一个一般 ...
- 解决小米/红米手机无法进行jdwp调试的问题
问题描述:在逆向一个app,研究环境是一台红米2,需要使用jdwp接口,也就是ddms下面这个界面: 但神奇的是,同一台主机上,模拟器的进程可以显示在ddms界面上,红米2确一个进程都没有显示出来.c ...
- Bash Shell 下打开一个TCP / UDP SOCKET
Bash Shell 下打开一个TCP / UDP SOCKET http://jingyan.baidu.com/article/636f38bb6166c3d6b84610d1.html
- 预处理ifndef
#ifdef 详解 这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有 ...
- 6.shell判断语句
[ condition ](注意condition前后要有空格),可以使用$?验证(0为true,>1为false) 两个整数的比较:=:字符串比较-lt:小于-gt:大于-le:小于等于-ge ...
- eclipse启动几秒后报错 (一闪而过)
eclipse启动报错,让查看.metadata/.log日志 1 !SESSION 2013-09-23 17:28:28.484 ------------------------------- ...
- JavaScript变量、数据类型、函数
#转载请留言联系 说在前面: JavaScript 是一种弱类型语言,javascript的变量类型由它的值来决定. JavaScript语句的末尾用 ; 结束.空格没有特殊意义. 1.JavaScr ...
- Solidity 文档--第二章:安装 Solidity
安装Solidity 基于浏览器的Solidity 如果你只是想尝试一个使用Solidity的小合约,你不需要安装任何东西,只要访问基于浏览器的Solidity. 如果你想离线使用,你可以保存页面到本 ...
- MySQL 基础内容
创建数据库 对于表的操作需要先进入库 use 库名: -- 创建一个名为 inana_db 的数据库,数据库字符编码指定为 utf8create database inana_db character ...
- wxBot微信机器人框架(转)
原文:http://blog.csdn.net/tobacco5648/article/details/50722321 wxBot 是Python包装Web微信实现的微信机器人框架.可以很容易地实现 ...