【发布时间】:2015-07-23 13:37:43
【问题描述】:
我有一个接受字符串并提取以“@”开头的子字符串的存储过程。我决定为此使用 C# DLL 并使用 SQL 程序集访问此 DLL。因此,我在 C# 中开发了以下方法:
[Microsoft.SqlServer.Server.SqlFunction]
public static ? GetSubStrings(string text)
{
List<string> IDs=new List<string>();
foreach (Match match in Regex.Matches(text, @"(?<!\w)@\w+"))
{
try
{
IDs.Add(match.Value.Replace("@", ""));
}
catch (NullReferenceException) { continue; }
}
return IDs;
}
我添加了“?”代替返回类型,因为我不知道这个方法应该返回什么返回类型?请告诉我解决方案。我找不到任何存储此类数据的 SQL 类型。
【问题讨论】:
-
当您使用调试器单步执行代码时。在执行此行之前
match的值是什么IDs.Add(match.Value.Replace("@", ""));如果match contains @然后在IDs.Add(match.Value.Replace("@", ""));上方添加一行并执行@987654326 @然后做IDs.Add(match) -
@MethodMan 该方法工作正常,但问题是当返回到 SQL 存储过程时,我的方法的返回类型应该是什么。正则表达式代码不是我的问题。
-
很高兴看到存储过程,我们可以确定它是否应该是 DataTable、IEnumerable、String、Int. 等......
标签: c# sql-server stored-procedures .net-assembly sqldatatypes