首页 > 代码库 > CLR存储过程

CLR存储过程

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 StoredProcedure1(string  name)
    {
        SqlPipe sp = SqlContext.Pipe;
        string sql = "insert into idcode(idcode)values('"+name+"')";
        using (SqlConnection conn = new SqlConnection("context connection=true"))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.Text;
            cmd.Connection = conn;
            cmd.CommandText = sql;
            SqlDataReader rdr = cmd.ExecuteReader();
            sp.Send(rdr);
            conn.Close();
        } 
    }
};

    注:本程序中没有用类MyDBase,而是使用“context.connection=true”(说明详见:context.connection帮助文档)连接数据库。

    谷歌翻译:内部数据访问的问题是一个相当常见的场景。也就是说,你想访问你的哪些公共语言运行时(CLR)存储过程或函数执行相同的服务器。一种选择是创建一个使用System.Data.SqlClient.SqlConnection的连接,指定指向本地服务器的连接字符串,并打开连接。这需要指定凭据登录,连接是在比存储过程或函数不同的数据库会话,它可能有不同的设置选项,它是在一个单独的事务,它不看你的临时表,等等。如果您的托管存储过程或函数的代码被执行的SQL Server的过程中,这是因为有人连接到该服务器并执行一个SQL语句来调用它。你可能想在存储过程或函数在这方面的背景下,执行连同其交易,SET选项,等等。这就是所谓的上下文的连接。

CLR存储过程