我有一个数据库事情的问题。存储的Proc必须用3或4个参数调用。如果没有给出ImageID,那么它必须 进入If循环并执行。如果给出ImageID,则执行存储过程的else部分。但我不知道这是为什么显示 过程或函数“”期望参数“@ImageID”,但未提供。”过程或函数“”期望参数'',这是不提供的
由于提前
if (!hasImage)
{
parameters = new SqlParameter[]
{
new SqlParameter("@LocationID", LocationID),
new SqlParameter("@PrimaryID",
Convert.ToInt32(CategoryList[i].ToString().Split(',')[0])),
new SqlParameter("@SecondaryID",
Convert.ToInt32(CategoryList[i].ToString().Split(',')[1]))
};
SqlHelper.ExecuteNonQuery(
DbConnString,
System.Data.CommandType.StoredProcedure,
"TempUpdateMerchantCategories_Insert",
parameters);
}
else
{
parameters = new SqlParameter[]
{
new SqlParameter("@LocationID", LocationID),
new SqlParameter("@PrimaryID",
Convert.ToInt32(CategoryList[i].ToString().Split(',')[0])),
new SqlParameter("@SecondaryID",
Convert.ToInt32(CategoryList[i].ToString().Split(',')[1])),
new SqlParameter("@ImageID",
Convert.ToInt64(ImageData[j].ToString().Split(',')[0]))
};
SqlHelper.ExecuteNonQuery(
DbConnString,
System.Data.CommandType.StoredProcedure,
"TempUpdateMerchantCategories_Insert",
parameters);
}
存储的过程是这样的。
CREATE PROCEDURE [dbo].[TempUpdateMerchantCategories_Insert]
(
@LocationID BIGINT,
@PrimaryID INT,
@SecondaryID INT,
@ImageID BIGINT)
AS
BEGIN
if (@ImageID is null)
BEGIN
SET NOCOUNT ON;
INSERT INTO TempMerchant_Location_Category(
LocationID,
PrimaryID,
SecondaryID)
VALUES (
@LocationID,
@PrimaryID,
@SecondaryID)
END
ELSE
BEGIN
SET NOCOUNT ON;
INSERT INTO TempMerchant_Location_Category(
LocationID,
PrimaryID,
SecondaryID,
ImageID)
VALUES(
@LocationID,
@PrimaryID,
@SecondaryID,
@ImageID)
END
END
令人惊叹!多于1个答案。谢谢大家! – Ram 2010-09-09 13:13:47