在VS2010中创建SQL SERVER系统存储过程

在VS2010中创建SQL SERVER系统存储过程

参照:http://www.cnblogs.com/webabcd/archive/2007/06/24/793941.html

一:准备工作:

1. 首先在某数据库(如DbTest)中创建一个表,如t1,SQL语句如下:

CREATE TABLE t1(tid int primary key, tname nvarchar(20));

2. 启用CLR集成

在你开始用C#写存储过程之前,必须要启用你的SQL Server的CLR集成特性。 默认情况它是不启用的。代码如下:

sp_configure 'clr enabled',1

GO

RECONFIGURE WITH OVERRIDE

GO

注:许多资料中没加WITH OVERRIDE选项,在执行时可能会报错:

Msg 5808, Level 16, State 1, Line 1
不支持对系统目录进行即席更新。
二:创建系统存储过程:

1.       在VS 2010的IDE环境中新建项目:在“已安装的模板”中依次展开Database、SQL Server,选择“Visual C# SQL CLR Database Project”。(注意选择.NET框架的版本,最好与要发布到的数据库版本匹配,如SQL 2005我选择的是.NET框架2.0)

2.       点击确定按钮后,系统会自动弹出“添加数据库引用”对话框,在这里可以选择已有的数据库连接,或添加新的连接,将数据库连接到DbTest中。当然也可以取消后稍候配置。

3.       在新建的项目中添加新项,选择“Stored Procedure”,取名为sp_t1。

4.       在新打开的类文件中,头部已经添加了一些命名空间的引用,注意最后两个:System.Data.SqlTypes命名空间包含了很多不同的类型,它们可以用来代替SQL Server的数据类型。 Microsoft.SqlServer.Server命名空间下的类负责SQL Server的CLR集成。

5.       自动生成的静态方法sp_t1其实就是我们要编写的存储过程。(注意:该方法上面已经添加了特性SqlProcedure。 在这个类中其实可以编写许多存储过程)

6.       修改sp_t1方法为如下代码:

[Microsoft.SqlServer.Server.SqlProcedure]

    public static void sp_t1(SqlInt32 tid, SqlString tname)

    {       

        // Put your code here

        SqlConnection con = new SqlConnection("context connection=true");

        SqlCommand com = new SqlCommand("insert into t1 values(@tid,@tname)", con);

        SqlParameter par1 = new SqlParameter("@tid", tid);

        SqlParameter par2 = new SqlParameter("@tname", tname);

        con.Open();

        com.Parameters.Add(par1);

        com.Parameters.Add(par2);

        int cnt = com.ExecuteNonQuery();

        con.Close();

        SqlContext.Pipe.Send(cnt.ToString());

    }

7.       上面基本上是ADO.NET操作数据库的代码。但注意

(1)方法参数的数据类型SqlInt32 与SqlString,分别对应数据库中的int与nvarchar数据库型。

(2)连库字符串的写法,“上下文连接”可以让你使用当前登录到数据库的用户作为你的登录数据库的验证信息。 将来存储过程创建好后,用登录用户来执行此存储过程。

(3)代码最后一句调用了Send方法,向调用方返回信息(SQL语句影响的行数),当然如果不需要也可以不返回。

8.       编译项目成功后再在项目的右键菜单中选择“部署(deploy)”,如果出现成功的信息,表明存储过程可以到SQL Server中使用了。

我在测试时,win7+SQL Server2005开发版没有部署成功,但在另一台机器windows 2003+SQL Server标准版部署成功。

9. 在SQL Server Management Studio中展开DbTest数据库的存储过程,可以看到带锁标记的系统存储过程sp_t1。

三:调试系统存储过程

系统存储过程与普通的存储过程的执行没有什么区别:exec sp_t1 1,'aa'

查询后表t1中添加了一条记录,并且在消息空格中返回了SQL语句影响的结果1。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一屁小肥咩

您的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值