CLR stored procedure in SQL Server

本文以Visual Studio 2008为例。

步骤:

  • 打开 Visual Studio 2008

  • New Project,选择 Visual C# –> Database –> SQL Server Project.

Visual Studio 2017: 选择 SQL Server -> SQL Server Database Project.
  • 设置 Project Name 为 MyClrProcTest,并点击 Ok.

  • 弹出对话框 “Add Database Reference”,找到并选中你的数据库然后确认.

  • 在 Solution Explorer 栏目中,右键点击 MyClrProcTest 工程-> Add –> Stored Procedure.

Visual Studio 2017: Add -> New Item -> SQL CLR C# -> SQL CLR C# Stored Procedure
  • 弹出对话框 “Add New Item”,输入存储过程文件名为 sp_MyClrProc.cs,点 Add 确认.

  • 用以下代码替换:

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Data.SqlTypes; 
using Microsoft.SqlServer.Server;
 
public partial class StoredProcedures 
{ 
    [Microsoft.SqlServer.Server.SqlProcedure] 
    public static void sp_MyClrProc(string name) 
    { 
        using (SqlConnection conn = new SqlConnection("context connection=true")) 
        { 
            SqlCommand cmd = new SqlCommand(); 
            SqlParameter param = new SqlParameter("@Name", SqlDbType.NVarChar);
            param.Value = name; 
            cmd.Parameters.Add(param); 
            cmd.CommandText = "select 'Hello: ' + @Name as [Greeting]"; 
            cmd.Connection = conn; 
            conn.Open(); 
            SqlDataReader dr = cmd.ExecuteReader(); 
            SqlContext.Pipe.Send(dr); 
            conn.Close(); 
        } 
    } 
}
  • 编辑工程自动生成的SQL测试文件 Test.sql,在文件末添加一行
exec sp_MyClrProc @Name='Mike'
  • 在运行上面的测试代码前先要启用 CLR 功能,在SQL Server Management Studio中运行如下命令:
sp_configure 'clr enabled', 1 
reconfigure
  • 回到之前的工程 MyClrProc,按F5运行,观察输出内容
Greeting    
----------- 
Hello: Mike