怎样从SQL Server 2005 CLR存储过程返回结果集

 我来答
羡牧线08
2013-10-20 · TA获得超过183个赞
知道答主
回答量:121
采纳率:0%
帮助的人:54.4万
展开全部
  代码示例  下面的C#函数将获得某文件夹的文件列表并将这个列表作为一个结果集返回。这个函数的参数如下所示:   path——获取文件所在的文件夹;例如C:\TEMP。   pattern——通配符,如*.*(所有文件),*.dat,等等。   recursive——是否包含在子文件夹下的文件;1代表true,否则为0。 publicstaticvoidGetListOfFiles(   SqlStringpath,   SqlStringpattern,   SqlBooleanrecursive)  {  SqlPipepipe=SqlContext.Pipe;   SqlMetaData[]cols=newSqlMetaData[1];   cols[0]=newSqlMetaData(   "FILE_NAME",SqlDbType.NVarChar,1024);   SearchOptionsearchOption;   if(recursive==true)   searchOption=SearchOption.AllDirectories;  else  searchOption=SearchOption.TopDirectoryOnly;   stringdir=path.ToString();   if(Directory.Exists(dir)==false)  {  pipe.Send("Directorydoesnotexist");   return;  }  string[]files=Directory.GetFiles(   dir,pattern.ToString(),searchOption);   if(files.Length0)  {  SqlDataRecordrec=newSqlDataRecord(cols);   pipe.SendResultsStart(rec);   foreach(stringfileinfiles)  {  rec.SetSqlString(0,newSqlString(file));   pipe.SendResultsRow(rec);  }  pipe.SendResultsEnd();  }  else  {  pipe.Send("Nofiles");  }  }  Directory是.NET框架中的一个类。它是用来检查这个路径是否存在并获得文件列表。在上面的代码中从CLR集成的观点来看,重点是:   SqlPipe对象是用来将结果发送给调用者的。SqlContext对象是自动可用的,并提供SqlPipe对象。   SqlMetaData类是用来指定结果集中的一个字段的。我们指定字段名称、类型和大小。我们在这个例子中只返回一个字段,但是你可以返回多个字段。   SqlDataRecord类是用来形成结果集中的一个单独记录的。它被初始化为SqlMetaData对象的数组(例如这些字段)。SetSqlString方法是被调用来基于序列号给每个字段分配值的(例如在SqlMetaData对象数组中的索引)。   SqlPipe的SendResultsRow方法通过SqlDataRecord对象发回一条记录给调用者。   SqlPipe的SendResultsEnd方法是用来表示结果集结束的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式