第7章 存储过程及触发器.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(5)设置数据库允许CLR程序集运行。在“查询分析器”中运行下面的代码来设置数据库,设置后用户就可以调用这个存储过程。 sp_configureshow advanced options,1; GO exec sp_configure clr_enabled,1 GO reconfigure 调用的语法和T-SQL调用存储过程的语法相同。运行下面的命名(运行结果如图7.15所示): EXEC ExecuteToClient 图7.14 创建的CLR存储过程 图7.15 调用CLR存储过程运行的结果 在“生成”菜单中选择部署FindStuInfo,然后找到被部署到PXSCJ数据库中的存储过程“FindStuInfo”。如图7.16所示,欲执行该存储过程只需选定该存储过程,右击鼠标,在弹出的快捷菜单中选择“执行存储过程”菜单项即可。执行结果如图7.17所示。 图7.16 执行存储过程图 图7.17 执行“FindStuInfo”存储过程的结果 1.SqlPipe类 SqlPipe类允许托管存储过程在SQL Server数据库进程内运行,以便将结果返回调用方。SqlPipe类型主要的公开成员有: (1)SqlPipe类型常用的公共方法。 ExecuteAndSend:执行作为参数传递的命令,并将结果发送到客户端。 Send:将结果直接发送到客户端。 其中SqlPipe.Send 方法可以根据参数的类型不同或者参数的个数不同被重载。重载是多态的形式之一,在C#中最常用的重载就是方法的重载。 (2)SqlPipe.Send (SqlDataReader):将多行结果集直接发送到客户端,参数为reader。要发送到客户端的多行结果集为一个SqlDataReader对象。当reader为空引用时出现一个ArgumentNullException异常。 定义该重载方法的一般形式如下: public void Send (SqlDataReader reader); (3)SqlPipe.Send (SqlDataRecord):将单行结果集直接发送到客户端。参数为record,发送到客户端的单行结果集为一个SqlDataRecord对象。当record为空引用时出现异常。定义该重载方法的一般形式如下: public void Send (SqlDataRecord record); (4)SqlPipe.Send (String):向客户端直接发送一个字符串消息。参数为message,要发送到客户端的消息为字符串。message为空引用时引发一个异常。定义该重载方法的一般形式如下: public void Send (string message) 2.SqlContext类 SqlContext对象可用于获取触发器上下文和管道对象(如在存储过程中):如果该客户端使用集成身份验证向服务器进行身份验证,它还可用于获取WindowsIdentity对象,该对象表示调用的客户端的Microsoft Windows标识。 SqlContext类型定义的公开的成员公共属性如下: (1)IsAvailable:指定调用代码是否在SQL Server中运行以及上下文连接是否可访问。 (2)Pipe:获取将结果集、消息和命令的执行结果发送回客户端的管道对象。 (3)TriggerContext:获取触发器上下文,该上下文提供有关导致触发器激发的原因的信息以及被更新的列的映射。 (4)WindowsIdentity:调用方的Microsoft Windows标识。 其中,SqlContext.Pipe属性值定义为:如果该管道可用,则为SqlPipe的实例;如果在管道不可用的上下文中(如在用户定义的函数中)调用,则为null。 下面将结合具体的实例来演示CLR触发器的创建步骤。 (1)新建一个命名为“Trigger_CLR”的数据库项目。在Microsoft Visual Studio 2005中,依次展开“文件”→“新建”→单击“项目”选项,系统弹出“新建项目对话框”。和前面介绍的创建CLR存储过程一样,在新建项目对话框中选择“SQL Server项目”模板。输入新建项目的名称“Trigger_CLR”→保存位置“D:\design”→单击“确定”按钮,出现如图7.9所示的“添加数据库引用”的窗口。在该窗口中选择创建“CLR触发器”相对应的数据库。单击“确定”按钮,系统创建了一个SQL Server项目。 (2)使用C#语言将触发器定义为类的静态方法。在“解决方案资源管理器”中右击“Trigger_CLR”项目,在弹出的快捷菜单中选择“添加”菜单项→选

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档