Procedure or function "" expects parameter '', which was not supplied
I have a problem with Database thing. The stored Proc has to be called with either 3 or 4 parameters. If ImageID is not given, then it has to get into If loop and execute. if ImageID is given, execute the else part of the stored proc. But i have no idea why is that showing Procedure or function "" expects parameter '@ImageID', which was not supplied."
Thanks in Advance
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);
}
The Stored Proc is like this.
CREATE PROCEDURE [dbo].[TempUpdateMerchantCategories_Insert]
(
@LocationID BIGINT,
@Pr开发者_如何学JAVAimaryID 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
create your proc like this in that case
CREATE PROCEDURE [dbo].[TempUpdateMerchantCategories_Insert]
( @LocationID BIGINT,
@PrimaryID INT,
@SecondaryID INT,
@ImageID BIGINT = null)
This will make ImageID an optional parameter
well without default value it expects some value
CREATE PROCEDURE [dbo].[TempUpdateMerchantCategories_Insert] ( @LocationID BIGINT, @PrimaryID INT, @SecondaryID INT, @ImageID BIGINT = null)
You have to pass the @ImageID parameter through code or else you can have a default value in your stored procedure for the @ImageID.
like @ImageID BIGINT = null
精彩评论