Glance Off Yukon @ 3/9/2004

学习类
from: divino@blogger.cn
存储过程使用.NET组件

.net fx 2.0新增了一个Data Provider的名字空间:System.Data.SqlServer

举个例子:
using System;
using System.Data.SqlServer;
namespace DateAccess
{
public class UserInfoDAO
{
  public static int GetUserCount()
  {
  SqlCommand cmd = SqlContext.GetCommand();
  int count = (int)cmd.ExecuteScalar();
  return count;
  }
}
}

其中的SqlContext是一个数据库上下文信息类

将其编译为组件后,装入数据库:
CREATE ASSEMELY UserInfoDAO FROM 'C:\Test\DateAccess.dll'

在存储过程中使用:
CREATE PROCEDURE GetUserCount
AS
EXTERNAL NAME DateAccess:[DateAccess::UserInfoDAO]::GetUserCount
其中EXTERNAL NAME的调用语法是:AssemblyName:[NamespaceName::ClassName]:MethodName

最后像平常一样使用这个存储过程就可以了,好像有点麻烦~~~,另外用户自定义函数也可以类似的这样使用。

T-SQL异常处理语法

这个比较简单没什么说的
CREATE PROCEDURE InsertUser
@ID int,
@UserName varchar(20)
AS
SET XACT_ABORT ON
BEGIN TRY
BEGIN TRAN
  INSERT UserInfo VALUES(@ID, @UserName)
COMMIT TRAN
END TRY
BEGIN CATCH TRAN_ABORT
ROLLBACK TRAN
END CATCH

对XML类型字段的操作

假设UserInfo表有一个DetailInfo字段是xml类型,其中一条记录内容是<user><name>Divino</name></user>

1.XML格式的字段的查询,使用query方法:
DECLARE @User xml
DECLARE @UserName xml
SELECT @User=DetailInfo FROM UserInfo WHERE ID=1
SET @UserName = @User::query("/user/name")
PRINT CONVERT(varchar, @UserName)
输出:
<name>Divino</name>

2.如果不希望查询结果是xml格式,可以使用value方法:
SELECT DetailInfo::value("/user/name") AS User FROM UserInfo WHERE ID=1
输出:
User
---------
Divino

3.另外还包括exist和modify两种方法,用于查询xml类型字段是否包含特定结点和更新结点内容,需要结合XML DML语言。
发布于 3/9/2004 9:46:51 | 评论:0

看帖要回帖...

categories
archives
links
statistics
  • 网志数:1168
  • 评论数:2011