MSSQL sql存储过程和CLR存储过程区别


1 可实现功能区别

sql 存储过程:由(select insert update delete)关键字和过程控制关键字(while set if else cursor goto …)组成相关sql语句,来实现逻辑和流程控制
和返回信息给客户端
CLR存储过程:可实现sql存储过程中,所有的功能外,还可通过调用.net api实现更复杂的功能,例 发送邮件 监控系统运行状况,访问网络…



2 运行效率区别

sql 存储过程:对于一些计算和字符串处理等特殊操作,需要使用多重脚本才能实现相应的功能,增加计算的复杂度,
对于数据获取上,由于sql存储过程直接运行在DB服务器上,所以获取数据的效率高于CLR存储过程。
CLR 触发器:可以调用.net丰富的API 函数库,补充sql查询语言表达能力,处理一些特殊的计算,clr存储法在一些复杂的逻辑处理上拥有更好的性能。

3 提交sql方式区别


3.1 数据返回方式不同

sql 存储过程:只需一个sql脚本就可以运行相关操作,就可以将数据返回给客户端
clr存储过程:需要通过sqlpipe对象将结果返回客户端

3.2 提交sql语句的方式不同

sql存储过程: 直接同DB服务器更新交互
clr存储过程:需要采用ado.net的方式提交sql至db服务器