Visual Studio从Azure返回错误,指出未提供参数...但它是

时间:2017-11-03 20:35:37

标签: c# sql azure

我收到一个错误,即没有提供参数@BuyerCode。它的默认值为“None”,并设置为C#可选参数。

我正在将Visual Studio调试器附加到Azure,抱歉。我正在使用Cloud Explorer。右键单击Web应用程序,附加调试器。

这对我来说真的很糟糕,不是说代码失败的WHICH行: cmd.ExecuteNonQuery() - 现在在代码中强调了这一行。谢谢你的耐心等待。

错误是“存储过程ISSI_SEARCH_ADDSEARCHRESULT需要未提供的参数@BuyerCode”,类似于此。

在我结束时,没有任何工作有点令人沮丧。真是令人失望,我只是没有清楚地沟通。

我放入了SQL的其余部分,抱歉,我无法将其格式化。安德烈在第一部分做到了这一点。我在编辑器中使用了{}符号。

以下是调用相关代码的代码段。我通过了硬编码值,显示在括号中。

     private void addSearchResult(
        string commandText
        , int SearchId
        , int SearchProviderId
        , string OEMPartNumber //customer part number
        , string ManufacturerPartNumber
        , string CustomerPartDescription
        , string VendorName
        , string City
        , string State
        , decimal Quantity
        , decimal SalePrice
        , string AvailableStock = "None"
        , decimal Cost = 0
        , decimal ExpediteFee = 0
        , **string BuyerCode = "None"** // there is a default provided
        , string VendorPartName = "None"
        , string CustomerPartName = "None"
        , decimal LocationId = 0
        , decimal VendorId = 0
        , int PartId = 0
        )
    {

这是现在方法调用的最后一部分,传递了硬编码值:

                       , 0 //srList.Cost
                        , 0 //srList.ExpediteFee
                        , "None" //srList.BuyerCode
                        , "None" //srList.VendorPartName
                        , "None" //srList.CustomerPartName
                        , 0 //srList.LocationId
                        , 0 //srList.VendorId
                        , 0 //srList.PartId

以下是addSearchResult方法中的代码。我在其他帖子中唯一能找到的就是省略了我所拥有的这行代码,忽略强调它的星号:

 SqlConnection cnx = new SqlConnection();
 cnx.ConnectionString = ConxString;
 SqlCommand cmd = new SqlCommand();
 cmd.Parameters.AddWithValue("SearchId", SearchId);
 cmd.Parameters.AddWithValue("SearchProviderId", SearchProviderId);
 cmd.Parameters.AddWithValue("CustomerPartNumber", OEMPartNumber);
 cmd.Parameters.AddWithValue("ManufacturerPartNumber", ManufacturerPartNumber);
 cmd.Parameters.AddWithValue("CustomerPartDescription", CustomerPartDescription);
 cmd.Parameters.AddWithValue("VendorName", VendorName);
 cmd.Parameters.AddWithValue("City", City);
 cmd.Parameters.AddWithValue("State", State);
 cmd.Parameters.AddWithValue("Quantity", Quantity);
 cmd.Parameters.AddWithValue("SalePrice", SalePrice);
 cmd.Parameters.AddWithValue("AvailableStock", AvailableStock);
 cmd.Parameters.AddWithValue("Cost", Cost);
 cmd.Parameters.AddWithValue("ExpediteFee", ExpediteFee);
 cmd.Parameters.AddWithValue("BuyerCode", BuyerCode);
 cmd.Parameters.AddWithValue("VendorPartName", VendorPartName);
 cmd.Parameters.AddWithValue("CustomerPartName", CustomerPartName);
 cmd.Parameters.AddWithValue("LocationId", LocationId);
 cmd.Parameters.AddWithValue("VendorId", VendorId);
 cmd.Parameters.AddWithValue("PartId", PartId);
 cmd.Connection = cnx;
 **cmd.CommandType = System.Data.CommandType.StoredProcedure;** <-- yep, this one's already here ... :) 
 cmd.CommandText = commandText;
 cnx.Open();
 *cmd.ExecuteNonQuery();* //failure point is right here -- this line throws the error.
 cnx.Close();

SQL中的参数设置为NULL作为默认值,SQL的值中的参数顺序确实与输入匹配,顺便说一下:

ALTER PROCEDURE [dbo].[ISSI_SEARCH_ADDSEARCHRESULT]
(
    @SearchId INT,
    @SearchProviderId INT,
    @CustomerPartNumber VARCHAR(100) NULL,
    @ManufacturerPartNumber VARCHAR(100) NULL,
    @CustomerPartDescription VARCHAR(1000) NULL,
    @VendorName VARCHAR(100) NULL,
    @City VARCHAR(100) NULL,
    @State VARCHAR(50) NULL,
    @Quantity NUMERIC(18,0) NULL,
    @SalePrice NUMERIC(10,2) NULL,
    @AvailableStock VARCHAR(50) NULL,
    @Cost NUMERIC(10,2) NULL,
    @ExpediteFee NUMERIC(10,2) NULL,
    @BuyerCode VARCHAR(50) NULL,
    @VendorPartName VARCHAR(1000) NULL,
    @CustomerPartName VARCHAR(1000) NULL,
    @LocationId INT NULL,
    @VendorId INT NULL,
    @PartId INT NULL
)
AS
BEGIN

INSERT     INTO [dbo]。[visSearchResults]     (         SearchId,         SearchProviderId,         CustomerPartNumber,         制造商零件编号 ,         CustomerPartDescription,         供应商名称 ,         城市,         州,         数量,         销售价格 ,         可用的股票,         成本,         ExpediteFee,         BuyerCode,         VendorPartName,         CustomerPartName,         LocationId,         VendorId,         PartId,         创建     )     VALUES     (          @SearchId,         @SearchProviderId,         @CustomerPartNumber,         @制造商零件编号 ,         @CustomerPartDescription,         @供应商名称 ,         @City,         @State,         @Quantity,         @销售价格 ,         @AvailableStock,         @Cost,         @ExpediteFee,         @BuyerCode,         @VendorPartName,         @CustomerPartName,         @LocationId,         @VendorId,         @PartId,         GETDATE()     )

所以我已经尝试过了。查询在数据库级别运行。我检查了BuyerCode的外壳,这是对的。寻找领先或尾随的空白,这一切都很好。

我的智慧结束了。

0 个答案:

没有答案