簡體   English   中英

過程或函數期望參數'未提供

[英]Procedure or function expects parameter ' which is not supplied

您好朋友,我面臨一個將數據加載到網格視圖的問題。

頁面加載事件調用我里面的代碼這樣的一個方法,如loaddata()

  using (SqlConnection Sqlcon = new SqlConnection(strCon))
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                Sqlcon.Open();
                cmd.Connection = Sqlcon;

                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "SP_Marketing";
                //cmd.Parameters.Add(new SqlParameter("@Sno", (object) ?? null.Value));
                cmd.Parameters.Add(new SqlParameter("@pvchAction", SqlDbType.VarChar,50));
                cmd.Parameters["@pvchAction"].Value = "select";
                cmd.Parameters.Add("@pIntErrDescOut", SqlDbType.Int).Direction = ParameterDirection.Output;

                SqlAda = new SqlDataAdapter(cmd);
                ds = new DataSet();
                SqlAda.Fill(ds);
                GridViewSample.DataSource = ds;
                GridViewSample.DataBind();
            }
        }

在sqlada中找到存儲過程記錄,發現錯誤,例如“過程或函數期望參數@dateemailed未提供”

ALTER PROCEDURE SP_Marketing          
(            
 @Sno   int  =0,            
 @DateEmailed datetime,            
 @DateResponded datetime,            
 @EmailRep  varchar(100)=null,    
 @Type   varchar(100)=null,    
 @Country  varchar(100)=null,    
 @State  varchar(100)=null,    
 @NameoftheCompany varchar(100)=null,    
 @website  varchar(100)=null,    
 @FirstName  varchar(100)=null,    
 @LastName  varchar(100)=null,    
 @Title   varchar(100)=null,    
 @Email   varchar(100)=null,    
 @Telephone  varchar(100)=null,    
 @Capabilities varchar(100)=null,    
 @Focus   varchar(100)=null,    
 @pvchCreatedBy  varchar(100)=null,            
 @pvchAction   varchar(50)=null,            
 @pIntErrDescOut  int output    
)            
AS            
 BEGIN            

   if(@pvchAction='select')         
    begin    
     SELECT sno,Dateemailed,dateresponded,emailrep,[type],country,[state],     , nameofthecompany,website,Firstname,Lastname,Title,email,telephone,
capabilities,  Focus FROM Emailmarketing  WHERE active=1  
  end


else if(@pvchAction='insert')    
  begin    
  INSERT INTO EmailMarketing(DateEmailed,DateResponded,EmailRep,[Type],    
  Country,[State],NameoftheCompany,website,FirstName,LastName,Title,Email,Telephone,Capabilities,Focus,Createdby,CreatedDt,Active)VALUES(@DateEmailed,@DateResponded,@EmailRep,@Type,    
  @Country,@State,@NameoftheCompany,@website,@FirstName,@LastName,@Title,@Email,@Telephone,@Capabilities,@Focus,@pvchCreatedBy,GETDATE(),1);    

  end    
  else if(@pvchAction='update')    
  begin    
  UPDATE EmailMarketing SET DateEmailed=@DateEmailed,DateResponded=@DateResponded,EmailRep=@EmailRep,[Type]=@Type,Country=@Country,[State]=@State,NameoftheCompany=@NameoftheCompany,website=@website,FirstName=@FirstName,LastName=@LastName,Title=@Title,Email=@Email,Telephone=@Telephone,Capabilities=@Capabilities,Focus=@Focus,Updatedby=@pvchCreatedBy,UpdatedDt=GETDATE()    
  WHERE Sno=@Sno;    
  end    
  else if(@pvchAction='delete')    
  begin    
  UPDATE   EmailMarketing SET Active=@pvchAction WHERE Sno=@Sno;    
  end    

    IF (@@ERROR <> 0)             
   BEGIN             
  SET @pIntErrDescOut = 1            
   END            
  ELSE            
   BEGIN            
  SET @pIntErrDescOut = 0            
   END     



END

以下參數在您存儲的過程中沒有默認值:

@DateEmailed datetime,            
@DateResponded datetime, 

因此,您始終需要在代碼中提供這些值:

cmd.Parameters.Add(new SqlParameter("@DateEmailed", SqlDbType.DateTime));
cmd.Parameters["@DateEmailed"].Value = DateTime.Now; // Provide your value here
cmd.Parameters.Add(new SqlParameter("@DateResponded", SqlDbType.DateTime));
cmd.Parameters["@DateResponded"].Value = DateTime.Now; // Provide your value here

如果您正在調用存儲過程,除了上面提到的NULL問題外,還有類型不匹配的問題。 例如,當我提供參數時,出現“未提供期望參數”錯誤。

拔出頭發一會兒之后,我發現該過程的輸入參數為nvarchar(50)並且我傳遞的字符串長於該字符串。 顯然,任何類型的不匹配都報告為與不提供相同(我認為是這樣)。

因此,您可能需要在兩端仔細檢查數據類型和大小。

暫無
暫無

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

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