部署clr存储过程

ALTER DATABASE WS SET TRUSTWORTHY ON
USE WS
GO
--Enable CLR Integration   
exec sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Concatenate]') AND type = N'AF')
DROP AGGREGATE [dbo].[Concatenate]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[IMSend]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[IMSend]

--Drop the functions if they already exist
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ufn_RegExIsMatch]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[ufn_RegExIsMatch]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ufn_RegExReplace]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[ufn_RegExReplace]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ufn_RegExMatches]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[ufn_RegExMatches]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ufn_RegExSplit]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[ufn_RegExSplit]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ufn_RegExSplitPart]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[ufn_RegExSplitPart]
GO

IF  EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = N'IDMTSqlExtLib')
DROP ASSEMBLY [IDMTSqlExtLib]
GO
/*
alter database idmtCode set trustworthy on
GO
*/
/*
--
--EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
*/
CREATE ASSEMBLY [IDMTSqlExtLib]
FROM
--'E:/Personal/My Documents/Visual Studio 2005/Projects/IDMT/ENTAPP/SqlExtLib/SqlExtLib/bin/Release/IDMT.ENTAPP.SqlExtLib.dll'
'C:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/IDMT.ENTAPP.SqlExtLib.dll'
with permission_set =
--EXTERNAL_ACCESS
UNSAFE
GO

CREATE AGGREGATE [dbo].[Concatenate]
(@value NVARCHAR(4000))
RETURNS NVARCHAR(max)
EXTERNAL NAME [IDMTSqlExtLib].[IDMT.ENTAPP.SqlExtLib.Concatenate]
GO
/*
select dbo.Concatenate(empid) from (select top 10 empid from VW_ADUsers ) U
*/

CREATE PROCEDURE [dbo].WebS(
@web NVARCHAR(50),@action NVARCHAR(50),@datas NVARCHAR(4000))
AS EXTERNAL NAME [IDMTSqlExtLib].[IDMT.ENTAPP.SqlExtLib.WS].SendIM
GO

/*
EXEC dbo.IMSend '1047','sql hihi'
*/
CREATE FUNCTION [dbo].[ufn_RegExIsMatch]
(@Input NVARCHAR(MAX), @Pattern NVARCHAR(MAX), @IgnoreCase BIT)        
RETURNS BIT 
AS EXTERNAL NAME [IDMTSqlExtLib].[IDMT.ENTAPP.SqlExtLib.RegEx].RegExIsMatch
GO

CREATE FUNCTION [dbo].[ufn_RegExReplace]
(@Input NVARCHAR(MAX), @Pattern NVARCHAR(MAX), @Replacement NVARCHAR(MAX), @IgnoreCase BIT) 
RETURNS NVARCHAR(MAX)             
AS EXTERNAL NAME [IDMTSqlExtLib].[IDMT.ENTAPP.SqlExtLib.RegEx].RegExReplace
GO

CREATE FUNCTION [dbo].[ufn_RegExMatches]
(@Input NVARCHAR(MAX), @Pattern NVARCHAR(MAX), @IgnoreCase BIT)        
RETURNS TABLE (Match NVARCHAR(MAX), MatchIndex INT, MatchLength INT) 
AS EXTERNAL NAME [IDMTSqlExtLib].[IDMT.ENTAPP.SqlExtLib.RegEx].RegExMatches
GO

CREATE FUNCTION [dbo].[ufn_RegExSplit]  
(@Input NVARCHAR(MAX), @Pattern NVARCHAR(MAX), @IgnoreCase BIT)        
RETURNS TABLE (Match NVARCHAR(MAX))          
AS EXTERNAL NAME [IDMTSqlExtLib].[IDMT.ENTAPP.SqlExtLib.RegEx].RegExSplit
GO

CREATE FUNCTION [dbo].[ufn_RegExSplitPart]  
(@Input NVARCHAR(MAX), @Pattern NVARCHAR(MAX),@Part int, @IgnoreCase BIT)        
RETURNS NVARCHAR(MAX)         
AS EXTERNAL NAME [IDMTSqlExtLib].[IDMT.ENTAPP.SqlExtLib.RegEx].RegExSplitPart
GO

--exec WebS 'IOWS.asmx','FileMove','fromPath=E:/22.txt&toPath=E:/Study/22.txt'
--exec WebS 'IOWS.asmx','FileCopy','fromPath=E:/22.txt&toPath=E:/Study/22.txt&overWrite=false'
 --exec WebS 'IOWS.asmx','FileDelete','filePath=E:/22.txtneedBak=true' --不能删除
-- exec WebS 'IOWS.asmx','FolderCreate','folderPath=E:/rr'
 --exec WebS 'IOWS.asmx','FolderMove','srcfolderPath=E:/rr&tarfolderPath=E:/Study/rr'
--exec WebS 'IOWS.asmx','FolderDelete','srcfolderPath=E:/rr&needBak=false'

 exec WebS 'RTXWS.asmx','RTXSendTipC','RECVUsers=2266*IMMsg=中国*Title=test*DelayTime=0'
--exec WebS 'RTXWS.asmx','RTXSendTipA','RECVUsers=2266&IMMsg=中国'

regex.replace("||||")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CLR 存储过程是一种使用 .NET Framework 编写的存储过程,可以使用 C# 或 VB.NET 等编程语言来编写存储过程的实现代码。CLR 存储过程可以访问 .NET Framework 的所有功能和类库,可以在存储过程中使用异步编程模型、LINQ 查询、XML 处理、正则表达式等高级功能。 下面是一个使用 CLR 存储过程的示例: 1. 创建 CLR 存储过程项目:首先需要在 Visual Studio 中创建一个 CLR 存储过程项目。可以选择“SQL Server 项目” - “SQL Server CLR 项目”来创建项目。 2. 编写存储过程代码:在项目中添加一个类,然后编写存储过程的实现代码。存储过程需要继承自 SqlProcedure 类,并使用 SqlProcedureAttribute 特性来标识存储过程的名称、输入参数和输出参数等信息。例如: ``` using System.Data.SqlClient; using Microsoft.SqlServer.Server; public partial class StoredProcedures { [SqlProcedure(Name = "MyStoredProcedure")] public static void MyStoredProcedure(SqlString input, out SqlString output) { // 存储过程的实现代码 output = "Hello, " + input.Value; } } ``` 在上面的示例中,我们创建了一个名为 MyStoredProcedure 的存储过程,该存储过程接受一个输入参数 input 和一个输出参数 output,将输入参数和一个字符串拼接后赋值给输出参数。 3. 编译和部署存储过程:在 Visual Studio 中编译项目生成 DLL 文件,然后将 DLL 文件部署到 SQL Server 中。可以使用 CREATE ASSEMBLY 和 CREATE PROCEDURE 语句来创建 CLR 存储过程。例如: ``` CREATE ASSEMBLY MyAssembly FROM 'C:\MyAssembly.dll' WITH PERMISSION_SET = SAFE GO CREATE PROCEDURE MyStoredProcedure @input NVARCHAR(50), @output NVARCHAR(50) OUTPUT AS EXTERNAL NAME MyAssembly.[StoredProcedures].MyStoredProcedure GO ``` 在上面的示例中,我们使用 CREATE ASSEMBLY 语句来创建程序集,指定程序集的文件路径和权限级别。然后使用 CREATE PROCEDURE 语句来创建存储过程,指定存储过程的名称、输入参数和输出参数,并指定存储过程实现的 CLR 方法。 4. 调用存储过程:在 SQL Server 中使用 EXECUTE 或 CALL 语句来调用存储过程。例如: ``` DECLARE @output NVARCHAR(50) EXEC MyStoredProcedure 'world', @output OUTPUT SELECT @output ``` 在上面的示例中,我们使用 EXECUTE 语句来调用存储过程,传入一个字符串参数 'world',并将输出参数赋值给变量 @output。最后,我们使用 SELECT 语句来显示输出参数的值。 需要注意的是,CLR 存储过程可能会对数据库服务器的性能产生影响,因此需要谨慎使用。在使用 CLR 存储过程时,应该仔细考虑存储过程的安全性、性能和错误处理等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值