我不知道哪部分代碼是錯誤的。發送參數到存儲過程
這是我的存儲過程
ALTER PROCEDURE dbo.AddNewNews
(@title nvarchar(50),
@text ntext,
@year int,
@month int,
@day int,
@id_writer int ,
@id_subject1 int,
@id_subject2 int,
@id_subject3 int,
@id_subject4 int,
@id_subject5 int)
AS
SET NOCOUNT ON
BEGIN TRANSACTION;
DECLARE @last_id_news int
BEGIN TRY
insert into news(title, text, year, month, day, id_writer)
values(@title, @text, @year, @month, @day, @id_writer)
set @last_id_news = SCOPE_IDENTITY()
if @id_subject1 is not null
begin
insert into news_subject (id_news,id_subject) values (@last_id_news,@id_subject1)
end
if @id_subject2 is not null
begin
insert into news_subject (id_news,id_subject) values (@last_id_news,@id_subject2)
end
if @id_subject3 is not null
begin
insert into news_subject (id_news,id_subject) values (@last_id_news,@id_subject3)
end
if @id_subject4 is not null
begin
insert into news_subject (id_news,id_subject) values (@last_id_news,@id_subject4)
end
if @id_subject5 is not null
begin
insert into news_subject (id_news,id_subject) values (@last_id_news,@id_subject5)
end
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
END CATCH;
RETURN
,這是我送參數存儲過程從我的C#代碼:
public bool AddNewNews(News news, List<object> subject)
{
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter ("@title", news.Id_news),
new SqlParameter ("@text", news.Text),
new SqlParameter ("@year", news.Year),
new SqlParameter ("@month", news.Month),
new SqlParameter ("@day", news.Day),
new SqlParameter ("@id_writer", news.Id_writer),
new SqlParameter ("@id_subject1", subject[0]),
new SqlParameter ("@id_subject2", subject[1]),
new SqlParameter ("@id_subject3", subject[2]),
new SqlParameter ("@id_subject4", subject[3]),
new SqlParameter ("@id_subject5", subject[4])
};
return SqlDBHelper.ExecuteNonQuery("AddNewNews", CommandType.StoredProcedure, parameters);
}
就在主題[I]可以爲空
但我不知道什麼時候去存儲過程和檢查id_subject
是錯誤的或其他部分的代碼?
是什麼讓你覺得這是錯的?你是否收到語法錯誤或異常? –
出現什麼錯誤?您也可以在最後一個返回中放置一個斷點,以便您可以看到所有參數值 –
這是錯誤:過程或函數'AddNewNews'需要參數'@ id_subject3',它沒有提供。 – nimaSadeghpour