none
Procedimiento Almacenado RRS feed

  • Pregunta

  • HOLA ....

    Nesecito convertir esto en un procedimiento almacenado

    private string SQL = "INSERT INTO CUENTA (FirstName,LastName,Email,Password,Zip,UserStatus, CreateDate) VALUES

    (@par1,@par2,@par3,@par4,@par5,@par6,@par7)"; public Object InsertUpdateValues(String SQL, String par1, String par2, String par3, String par4, String par5, String par6, DateTime par7) { SqlCommand comando = new SqlCommand(SQL, Conexion1); Object Objeto = new Object(); try { comando.Connection.Open(); comando.Parameters.Clear(); if (par1 != "") comando.Parameters.AddWithValue("@par1", par1); if (par2 != "") comando.Parameters.AddWithValue("@par2", par2); if (par3 != "") comando.Parameters.AddWithValue("@par3", par3); if (par4 != "") comando.Parameters.AddWithValue("@par4", par4); if (par5 != "") comando.Parameters.AddWithValue("@par5", par5); if (par6 != "") comando.Parameters.AddWithValue("@par6", par6); if (par7 != Convert .ToDateTime ("01/01/1900")) comando.Parameters.AddWithValue("@par7", par7); Objeto = comando.ExecuteNonQuery(); comando.Connection.Close(); } catch (Exception ex) { comando.Connection.Close(); Error = ex.ToString(); } return Objeto; }


    jueves, 28 de julio de 2016 18:27

Respuestas

  • E M C,

    Veo que agregas un valor de parámetro -a la colección Parameters- según el contenido de la variable, por tanto debes implementar parámetros opcionales en el procedimiento almacenado:

    CREATE PROCEDURE dbo.InsertarCuenta
    	@par1 varchar(4000) = NULL,
    	@par2 varchar(4000) = NULL,
    	@par3 varchar(4000) = NULL,
    	@par4 varchar(4000) = NULL,
    	@par5 varchar(4000) = NULL,
    	@par6 varchar(4000) = NULL,
    	@par7 datetime = NULL
    AS
    BEGIN
    	SET NOCOUNT ON;
    
    	INSERT INTO CUENTA 
    		(FirstName, LastName, Email, [Password], Zip, UserStatus, CreateDate) 
    	VALUES 
    		(@par1, @par2, @par3, @par4, @par5, @par6, @par7);
    END

    public int InsertUpdateValues(String SQL, String  par1, String par2, String par3, String par4, String par5, String par6, DateTime par7)
            {            
                try
                {      
                    SqlCommand comando = new SqlCommand("InsertarCuenta", Conexion1);
    	        comando.CommandType = CommandType.StoredProcedure;
                    comando.Connection.Open();
                    
                    if (par1 != "") comando.Parameters.AddWithValue("@par1", par1);
                    if (par2 != "") comando.Parameters.AddWithValue("@par2", par2);
                    if (par3 != "") comando.Parameters.AddWithValue("@par3", par3);
                    if (par4 != "") comando.Parameters.AddWithValue("@par4", par4);
                    if (par5 != "") comando.Parameters.AddWithValue("@par5", par5);
                    if (par6 != "") comando.Parameters.AddWithValue("@par6", par6);
                    if (par7 != Convert .ToDateTime ("01/01/1900")) comando.Parameters.AddWithValue("@par7", par7);
                    int rowsAffected = comando.ExecuteNonQuery();
                    Conexion1.Close();
                    return rowsAffected;
                }
                catch (Exception ex) { Error = ex.ToString(); }            
            }

    Te recomiendo que la conexión la realices dentro del método, no es correcto la definición de conexiones de ámbito de clase o -peor aún- de ámbito "global".


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta E M C viernes, 29 de julio de 2016 19:10
    jueves, 28 de julio de 2016 18:43