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.