SQL SERVER 的 CLR 存储过程

SQL SERVER 的 CLR 存储过程

MS SQL的TransactSQL语法比拟单一,用起来也很难受应,万一想告终一些混杂一点的逻辑,不得体。
能够利用NET编码,编译成DLL,然后在SQL SERVER里引用。
一、 编码
1、 修建一个项目,数据库种类 --》SQL SERVER


2、 修建“存储过程”


3、 编码也未曾什么尤其,重要是有些数据种类有考究。例如参数,该当能被SQLSERVER认识或得体调用递交,象整数就用SqlInt32什么的。但函数内部,就好像没什么考究。
[Microsoft.SqlServer.Server.SqlProcedure]
public static void UserInit(SqlInt32 iUserId)
{
int i = 0;
}

4、 数据库连接。由于这些函数和措施最后都在SQLSERVER里调用,那么调用它们之前,确定曾经和数据库连接上了,因而该当利用目前的数据库连接。
[Microsoft.SqlServer.Server.SqlProcedure]
public static void UserInit(SqlInt32 iUserId)
{
int i = 0;
using (SqlConnection connection = newSqlConnection("context connection =true"))
{……}
}

二、 增加安排
1、 代码编写完后,编译成DLL。然后敞开SQL SERVERwww.yinbiao.org的目标数据库 --》过程集--》增加过程集,将DLL导入。给该过程集起个名字,例如叫myClrDll


2、 在目标数据库修建一个存储过程,利用过程集里的函数。
CREATE PROCEDURE [dbo].[clr_User_Init]
@UserId [int]
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [myClrDll].[StoredProcedures].[UserInit]
GO

三、 更新
万一代码改动,重新编译成DLL,能够用以下语句重新导入
ALTER ASSEMBLY [myClrDll]
FROM 'd:/code/temp/myClrDll.dll'
当心'd:/code/temp/myClrDll.dll'定然是数据库所在机器的路径。等闲我们过程和数据库不同机器,因而这个路径经常搞错。

四、当心

CLR中的SqlString,在T-sql里面,要写成:NVarChar(MAX)。


于是能够定义出方块数据;他曾经懂得if推断,于是写得出冒犯推断;他曾经学会for循环,于是懂得如何消掉被填满的一行或多行……
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值