3

SQLで使用できるCLRハッシュ関数を作成しようとしています。

私が探しているmd5 checksumのは、行の値を計算することです。関数への入力が行であることを定義するにはどうすればよいですか?

たとえば、SQLネイティブチェックサム関数は、パラメータとして「式」を取ります。これにより、次のように呼び出すことができます。

Select CHECKSUM(*) From dbo.SomeTable

*パラメータとして使用できるように、C#でどの署名を定義しますか?

4

1 に答える 1

3

いいえ、これはSQLCLRでは不可能です。

SQLCLRインターフェイスでは、いくつかの内部T-SQL関数にあるいくつかの構成要素を使用できません。

  1. 入力パラメータとして「*」を渡す
    例:CHECKSUM(*)
    例:BINARY_CHECKSUM(*)

  2. 同じ関数名のオプションの入力パラメーター
    例:CONVERT(DATETIME、 '2013-04-20'、101)vs CONVERT(DATETIME、 '2013-04-20)
    例:CHARINDEX(' o'、' bob'、3) vs CHARINDEX('o'、'bob')

  3. 同じ関数名に対して異なるデータ型を返す
    例:CONVERT(INT、 '12')vs CONVERT(DATETIME、 '2013-04-20')
    例:COALESCE(@IntVariable、12)vs COALESCE(@VarcharVariable、'test')

基本的に、関数名のオーバーロードはありません。

于 2013-04-20T19:05:37.283 に答える