0


the query below throws the error mentioned in the title :

SELECT
   Set_To_Value_ID,
CASE 
   WHEN Set_To_Variable_ID IS NOT NULL THEN Set_To_Variable_ID 
   WHEN Changed_In_SP IS NOT NULL THEN Changed_In_SP
   WHEN Comment_Input IS NOT NULL THEN ( Select Comment FROM Process_Instance WHERE Process_Instance_ID = @Process_Instance_ID )
END AS Manual_Value
FROM Variables
WHERE Some_Irrelevant_Value = @Some_Irrelevant_Value 

I know the error comes from the Comment_Input case because that's the value that should be returned from there.

4

2 に答える 2

4

式を使用する場合CASE、すべての結果が同じデータ型である必要があります。

result_expressions およびオプションの else_result_expression の型のセットから最も優先度の高い型を返します。

http://msdn.microsoft.com/en-us/library/ms181765.aspx

SQL が nvarchar を int に変換しようとしないように、int データ型を nvarchar に変換することをお勧めします。

CASE 
   WHEN Set_To_Variable_ID IS NOT NULL THEN CAST(Set_To_Variable_ID as nvarchar(20))
   WHEN Changed_In_SP IS NOT NULL THEN THEN CAST(Changed_In_SP as nvarchar(20))
   WHEN Comment_Input IS NOT NULL THEN ( Select Comment FROM Process_Instance WHERE Process_Instance_ID = @Process_Instance_ID )
END AS Manual_Value
于 2012-11-19T11:45:47.560 に答える
0

トリガー、ビュー、または他のテーブルとの関係など、テーブルへの依存関係を確認してください。この特定の列のデータ型が int である可能性があります

于 2013-05-29T12:12:13.533 に答える