CLR存储过程

来源:互联网 发布:国考如何备考 知乎 编辑:程序博客网 时间:2024/05/16 23:34
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选项,等等。这就是所谓的上下文的连接。

0 0