2016-12-19 9 views
0

からC#​​に失敗した応答を送信:@JCID = 0が、私はそれは、ストアドプロシージャを続行したい場合は明らかには、私はT-SQL 2014年には、次のしているSQL

BEGIN 

declare @JCID int; 

set @JCID = (
select JobDetailsID 
from JobCardDetails 
where AMCEquipID = 5); 

IF (@JCID > 0) 

RETURN 

END; 

BEGIN 

//next trans 

END; 

(「最初の後に続くものそれ以外の場合は、最初の "END;"の後の残りの部分が実行されないように "RETURN"でストアドプロシージャを停止します。

次に、C#(Windowsフォーム)

   SQLConnect.Open(); 
       int q = SQLAddEquipQuery.ExecuteNonQuery(); 
       if (q == 0) 
       { 
        //Not updated. 
        MessageBox.Show("has NOT been added successfully."); 
       } 
       else 
       { 
        //Updated. 
        MessageBox.Show("has been added successfully."); 
       } 

RETURNが起動してプロシージャを停止してC#がクエリを「成功」しないようにする場合、SQLに「q」を1/fail/errorとして返す方法を教えてください。

答えて

0

値を返してからコードで追加されたパラメータでその値をキャッチするだけで済みます。ここにいくつかのコード例があります。

SQL属

 // SQL sp 
      Begin 
      Return 200  
      End 

C#の

// C# 
    using (SqlConnection sqlcon = new SqlConnection("Server=localhost; Database=Northwinds; Integrated Security=true;")) 
      { 
       sqlcon.Open(); 
       SqlCommand sqlcom = new SqlCommand(); 
       sqlcom.CommandType = CommandType.StoredProcedure; 
       sqlcom.CommandText = "myProcedure"; 
       sqlcom.Parameters.Add("@param1", SqlDbType.Int).Value = 254; 

       // this can be named anything I just used @r 
       SqlParameter returnParameter = sqlcom.Parameters.Add("@r", SqlDbType.Int); 
       // specify parameter is a return 
       returnParameter.Direction = ParameterDirection.ReturnValue; 
       sqlcom.Connection = sqlcon; 
       sqlcom.ExecuteNonQuery(); 

       // get return value 
       int result = (int)sqlcom.Parameters["@r"].Value ; 
       sqlcon.Close(); 
      } 
+0

私は私の主な問題は、私は「 'sqlcom.CommandText = "示します。EXECUTE MYPROCEDURE"' と、その後出て左に持っていただった参照おかげで、 sqlcom.CommandType = CommandType.StoredProcedure; "しかし、私はそれをあなたのものと同じに変更しました、そして、今働いています。 – ExpressDude

0

RAISERRORを使用して、独自のロジックを使用してエラーを作成します。これらはエラー処理プロセスを開始し、通常のエラーとして処理してC#にスローする必要があります。 https://msdn.microsoft.com/en-us/library/ms178592.aspx

関連する問題