【发布时间】:2014-07-11 15:41:54
【问题描述】:
不知道哪部分代码错了。
这是我的存储过程
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);
}
只有 subject[i] 可以为空
但我不知道它什么时候进入存储过程并检查id_subject是否为假或代码的其他部分?
【问题讨论】:
-
出现什么错误?也可以在最后的return中放一个断点,这样就可以看到所有的参数值了
-
这是错误:过程或函数“AddNewNews”需要参数“@id_subject3”,但未提供。
-
这是一个 STORED 过程 - 就像在 SQL Server 中的 STORED 中一样。它与“商店”无关......
标签: c# asp.net sql sql-server stored-procedures