2012-04-02 16 views
0

ABCの値(パラメータ)にはNULLを使用できます。私はnullに設定する方法に苦しんでいます。以下のステートメントは機能しません。 Nullable(OfInteger)型を設定しようとすると、値が「間違った型」であるというエラーが発生します。前もって感謝します。ASP.Net VBストアドプロシージャでNULLパラメータを使用する方法 - NULLの整数をストアドプロシージャに渡す方法

Dim ABC as Integer = Nothing 

Public Function RunStoredProce(ByVal **ABC** As Integer, ByVal DEF As String) _ 
       As IEnumerable(Of MyProjectStoredProcResults) Implements MyFunction.GetThatDataResult 

     Dim y = (From p In dc.uspReportMyFunction(**ABC**, DEF) 
      Select p).ToList 

     Return y 

    End Function 
+0

はパラメータであり、宣言されたストアドプロシージャ内で(つまり'paramName = NULL')?その場合、パラメータを 'ByVal abc as Nullable(Of Integer)'に変更すると動作します – mshsayem

+0

なぜあなたは.ToListを呼び出していますか? –

+0

ABCの値がNULLの場合、ABCのすべての値を返します。それ以外の場合は、ABCに格納されている値を返します。これはビューで引き渡されます。 – Susan

答えて

0
Dim ABC As Nullable(Of Integer) 

Public Function RunStoredProce(ByVal ABC As Nullable(Of Integer), ByVal DEF As String) _ 
      As IEnumerable(Of MyProjectStoredProcResults) Implements MyFunction.GetThatDataResult 

    Dim y = (From p In dc.uspReportMyFunction(ABC, DEF) 
     Select p).ToList 

    Return y 

End Function 

私はlinqtosqlが自動的にNULL可能翻訳を処理すると信じています。

+0

関数を実行すると、次のエラーが表示されます。「Nullableオブジェクトに値が必要です。」 – Susan

+0

ご協力いただきありがとうございます! – Susan

0

あなたは、整数NULL可能を作り、それだけが値を持っている場合はそれを渡すことができます:ABCNullableタイプとして渡され方

お知らせ:

Public Function RunStoredProce(ByVal ABC As Integer?, ByVal DEF As String) As IEnumerable(Of MyProjectStoredProcResults) Implements MyFunction.GetThatDataResult 
    Return (From p In dc.uspReportMyFunction(ABC, DEF) Select p).ToList 
End Function 

私にはわかりませんどのようにシステムだと、設定されていますが、uspReportMyFunctionは、ストアドプロシージャを呼び出す関数であると仮定すると、あなたはそれがnullだときABCを除外したい:

If ABC.HasValue Then 
    'Add ABC as a parameter 
End If 

'Add DEF as a parameter 

'Execute the stored procedure 

EDITこのよう

のは、これは、フロントエンドからストアドプロシージャ

public void SaveSomething(int jobID, int? postNumber) 
{ 
    using (var data = new DataAccess(this.ConnectionString)) 
    { 
     data.ProcedureName = "SaveSomething"; 

     data.AddParm("@JobID", SqlDbType.Int, JobID); 
     if (postNumber.HasValue) 
      data.AddParm("@PostNumber", SqlDbType.Int, PostNumber.GetValueOrDefault()); 

     return data.ExecNonQuery(); 
    } 
} 

を実行するデータ機能であるとしましょう、あなたはこの関数を呼び出すことができます。

int jobID = 1; 
int? postNumber = null; 

GetWorkOrderDetailAdjustment(jobID, postNumber); //postNumber == null 
+0

関数を実行すると、次のエラーが表示されます。「Nullableオブジェクトには値が必要です。 – Susan

+0

Dim A =(pからdc.uspReportMyFunction(ABC、DEF)を選択p).ToList ...... ???? – Susan

+0

私はそこに置いて、 'dc.uspReportMyFunction'が' ABC'を手続き呼び出しから除外するようにします。 –

関連する問題