2009-07-21 5 views
0

から...選択からスカラー値CLRのUDFを呼び出すことはできません。これは、タイムゾーンIDとdatetimeを取り、そのタイムゾーンに変換されたdatetimeを返します。は、私はスカラー値CLR UDF(ユーザー定義関数)を作成したテーブルの文

私は問題もなく、単純な選択からそれを呼び出すことができます。 (@datetimeはもちろん有効な日時変数である)

しかし、もし「dbo.udfConvert( 『ロマンス標準時』、@datetime)を選択し、」私は、それが失敗したテーブルからdatetime型に渡して呼び出す:

エラー(のStartTimeはもちろんdatetime型の列である列) 「sometableからdbo.udfConvert( 『ロマンス標準時』、のStartTime)を選択し、」メッセージ: "列" dbo "またはユーザー定義関数、または" dbo.udfConvert "を集計できません。名前があいまいです。 "

このメッセージは何かをスペルミスしている初心者のために実際にあるが、それは一つのケースではなく、他の中で働くよう、私は任意のスペルミスを行っているとは思いません。

アイデア?

答えて

0

問題が見つかりました。私は変数にハードコードされたタイムゾーンを抽出した場合は代わりにそれがうまく働いた:

宣言@timeZoneIDのデータ型はnvarchar(100)

選択@ timeZoneID = 'ロマンス標準時'

選択dbo.Convert(@timeZoneID sometable

から、のStartTimeは)どうやら、SQLサーバーのデータ型はnvarchar文字列にハードコードされた文字列を変換する方法を見つけ出すことができませんでした。

0

あなたも行うことができます。

select dbo.udfConvert(N'Romance Standard Time', StartTime) from sometable 

あなたはNでUnicode文字列が一定の接頭辞ない場合、それは文字列を使用する前に、SQL Serverは、現在のデータベースのUnicode以外のコードページに変換します。だから、私はnvarchar署名で関数を見つけることができませんでした。

関連する問題