簡體   English   中英

過程或函數“”需要參數'',這是未提供的

[英]Procedure or function “” expects parameter '', which was not supplied

我有數據庫問題。 必須使用3或4個參數調用存儲的Proc。 如果沒有給出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

在這種情況下,像這樣創建你的proc

    CREATE PROCEDURE [dbo].[TempUpdateMerchantCategories_Insert] 
( @LocationID BIGINT, 
@PrimaryID INT, 
@SecondaryID INT, 
@ImageID BIGINT = null)

這將使ImageID成為可選參數

沒有默認值,它需要一些價值

CREATE PROCEDURE [dbo].[TempUpdateMerchantCategories_Insert] ( @LocationID BIGINT, @PrimaryID INT, @SecondaryID INT, @ImageID BIGINT = null)

您必須通過代碼傳遞@ImageID參數,否則您可以在存儲過程中為@ImageID設置默認值。

@ImageID BIGINT = null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM