tipo ser salida recuperar query que puede procedimiento parámetro parametros parametro net función esperaba especificado ejemplos data consulta con commandtype c# gridview sql-server-2008-r2

c# - ser - El procedimiento o función espera el parámetro ''que no se proporciona



sqlcommand parameters vb net (2)

Hola amigos me enfrento a un problema para cargar los datos a la vista de cuadrícula.

el evento de carga de página llama al único método como loaddata () dentro de lo que escribo el código esto

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(); } }

el hallazgo del procedimiento de almacenamiento registra en sqlada un error detectado como "Procedimiento o función espera el parámetro @dateemail que no se proporciona"

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


Los siguientes parámetros no tienen valores predeterminados en su proceso almacenado:

@DateEmailed datetime, @DateResponded datetime,

Por lo tanto, siempre debe proporcionar esos valores en el código:

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


Si está llamando a un procedimiento almacenado, además del problema NULL mencionado anteriormente, hay un problema de desajuste de tipo. Por ejemplo, estaba obteniendo el error "Esperar que el parámetro no se suministre" cuando estaba suministrando el parámetro.

Después de sacarme el pelo un rato, descubrí que el procedimiento tenía un parámetro de entrada de nvarchar(50) y estaba pasando una cadena que era más larga que eso. Aparentemente, cualquier tipo de desajuste se informa de la misma manera que no proporciona (lo que de alguna manera supongo que es).

Por lo tanto, es posible que desee verificar los tipos y tamaños de datos en ambos extremos.