根据条件调用存储过程中的第一个或第二个查询

时间:2014-11-09 11:35:40

标签: sql stored-procedures

我有这样的存储过程;

AS 
BEGIN
   SELECT 
      I.IslemNo, S.SahisID, I.MukayyitID,
      K.BirimKisim, M.SorusturmaNo, S.KimlikNo, S.Ad, S.Soyad 
   FROM
      [Ifade.MukayyittenSahsa] M 
   INNER JOIN 
      [Ifade.SahislarKimlikTablosu] S ON M.SahisID = S.SahisID
   INNER JOIN
      [Ifade.Islem] I ON M.SahisID = I.SahisID 
   INNER JOIN
      [Ifade.Kullanicilar] K ON I.MukayyitID = K.KullaniciNo 
   WHERE
      M.SorusturmaNo = @SorusturmaNo 
      AND S.KimlikNo = @KimlikNo;
//INSERT STATEMENT

在Winforms端:如果存储过程生成0行,我想在同一存储过程中执行insert语句。

我该怎么做或有可能吗? 注意:它将在winform端的DialogResult选项之后..

1 个答案:

答案 0 :(得分:1)

您可以使用@@ROWCOUNT获取最后一个语句中受影响的行数。查看有关MSDN的更多信息。

在您的情况下,您可以执行以下操作:

SELECT 
  I.IslemNo, S.SahisID, I.MukayyitID,
  K.BirimKisim, M.SorusturmaNo, S.KimlikNo, S.Ad, S.Soyad 
FROM
  [Ifade.MukayyittenSahsa] M 
INNER JOIN 
  [Ifade.SahislarKimlikTablosu] S ON M.SahisID = S.SahisID
INNER JOIN
  [Ifade.Islem] I ON M.SahisID = I.SahisID 
INNER JOIN
  [Ifade.Kullanicilar] K ON I.MukayyitID = K.KullaniciNo 
WHERE
  M.SorusturmaNo = @SorusturmaNo 
  AND S.KimlikNo = @KimlikNo;

IF @@ROWCOUNT > 0
    INSERT abcd