たとえば、C# を使用して MAX() 関数を自分で開発できますか? ありがとう!
質問する
466 次
1 に答える
0
この投稿 (http://stackoverflow.com/questions/4749071/clr-table-valued-function-with-array-argument?rq=1) に記載されているように、テーブル値パラメーターはサポートされていません。SQL/CLR 関数は、SqlChars、SqlString、SqlInt32 など、名前空間 System.Data.SqlTypes 内の型の引数を取ります。基本的に、これらはプリミティブ型です。行セットや配列は関数パラメーターとして許可されません (前のリンクの回答を参照)。回避策を提案します)。
SQL/CLR 関数は、System.Text.RegularExpressions 名前空間 (Regex.Match) の活用や、特定の値 (おそらくパスワード文字列) のハッシュを返す関数の作成などに適しています。
CLR アセンブリ内の SQL 関数の例を次に示します。
public static partial class UserDefinedFunctions
{
public static readonly RegexOptions Options = RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline;
[SqlFunction]
public static SqlBoolean RegexMatch(SqlChars input, SqlString pattern)
{
Regex regex = new Regex(pattern.Value, Options);
return regex.IsMatch(new string(input.Value));
}
[SqlFunction]
public static SqlChars RegexGroup(SqlChars input, SqlString pattern, SqlString name)
{
Regex regex = new Regex(pattern.Value, Options);
Match match = regex.Match(new string(input.Value));
return match.Success ? new SqlChars(match.Groups[name.Value].Value) : SqlChars.Null;
}
}
( http://msdn.microsoft.com/en-us/magazine/cc163473.aspxから取得)
于 2012-11-08T00:55:34.133 に答える