2014-02-07 4 views
0

У меня есть небольшая проблема. Моя ценность всегда null. Я не знаю почему.Нужна помощь хранимая процедура sql server 2008 выходной параметр C#

код ниже:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[UsunTowar] 
    @id int output 
AS SET NOCOUNT ON 
BEGIN 
    if Exists (select top 1 Towar from Zamowienia where Towar = @id) 
     begin 
      set @id = 0 
     end 
    else 
     begin 
      delete from Towary where ID = @id 
      set @id = 1 
     end 
END 

Теперь C#:

con.Open(); 
SqlCommand cmd = con.CreateCommand(); 

cmd.CommandText = "EXECUTE UsunTowar @id"; 

cmd.Parameters.Add("@id", SqlDbType.Int).Value = id; 
cmd.Parameters["@id"].Direction = ParameterDirection.Output; 

cmd.ExecuteNonQuery(); 

string result = cmd.Parameters["@id"].Value.ToString(); 

con.Close(); 

Значение строки 'result' всегда null. Я пробовал много способов. Возвращаемое значение должно быть 0 или 1.

Код sql - это хорошо. Пожалуйста, помогите мне.

+2

хранимая процедура не возвращает ничего. Вы можете использовать 'select @ id' или' return @ id' в качестве последней строки в SP для вывода. Также вы можете использовать ExecuteScalar, если вы возвращаете одно значение. – Miller

+0

Есть еще одна вещь. Вы пытаетесь удалить, когда строка не существует. Итак, добавьте 'NOT' перед Exists – Miller

+0

Я попробовал' select @ id' и 'return @ id', но значение 'result' равно null. Это очень важно, и у меня нет никаких идей. –

ответ

1

Я использую это:

using(SqlConnection conn = new SqlConnection("myConnectionString")) 
    { 
     using(SqlCommand cmd = new SqlCommand("myStoredProcedure", conn)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.Add("@id", SqlDbType.Int).Direction = ParameterDirection.Output; 
      try 
      { 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       // -1 if null 
       int id = 0; 
       if (!int.TryParse(cmd.Parameters["@id"].value, out id)) 
        id = -1; 
      } 
      catch 
      { 
       throw; 
      } 

     } 
    } 
Смежные вопросы