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 - это хорошо. Пожалуйста, помогите мне.
хранимая процедура не возвращает ничего. Вы можете использовать 'select @ id' или' return @ id' в качестве последней строки в SP для вывода. Также вы можете использовать ExecuteScalar, если вы возвращаете одно значение. – Miller
Есть еще одна вещь. Вы пытаетесь удалить, когда строка не существует. Итак, добавьте 'NOT' перед Exists – Miller
Я попробовал' select @ id' и 'return @ id', но значение 'result' равно null. Это очень важно, и у меня нет никаких идей. –