• 【Vegas原创】善用procedure写比较长且容易变动的sql语句


     Proc: 完全可以胜任where子句条件查询。

    alter proc procBP_Cost_Query
    @Application nvarchar(50),
    @TechType nvarchar(50),
    @Size nvarchar(50),
    @TACFilm nvarchar(50),
    @Treatment nvarchar(50),
    @Thickness nvarchar(50),
    @ModelGroup nvarchar(50)
    as
    declare @chrSQL   varchar(8000)   

    set @chrSQL='SELECT a.CostID, a.modelgroupID,CostYear as BPYear,aa.CMALPH, a.productCost,a1.Code_Name AS Application, a4.Code_Name AS TechType, a2.Code_Name AS Size, 
           a6.Code_Name AS TACFilm, a5.Code_Name AS Treatment, a3.Code_Name AS Thickness, aa.PGrade as Grade,UpdateDate,UpdateUser as Updatedby
    FROM   T_BPCost AS a INNER JOIN
           T_ModelGroup AS aa ON a.ModelGroupID = aa.ModelGroupID INNER JOIN       
           T_CoddApplication AS a1 ON aa.PApplication = a1.Code_id INNER JOIN
           T_CoddSize AS a2 ON aa.PSize = a2.Code_id INNER JOIN
           T_CoddThickness AS a3 ON aa.PThickness = a3.Code_id INNER JOIN
           T_CoddTechType AS a4 ON aa.PTechType = a4.Code_id INNER JOIN
           T_CoddTreatment AS a5 ON aa.Treatment = a5.Code_id INNER JOIN
           T_CoddTACFilm AS a6 ON aa.PTACFilm = a6.Code_id        
    WHERE  2>1 
    '
     
    if @Application<>'ALL'
    begin
    set @chrSQL=@chrSQL+' and  a1.Code_Name = '''+@Application+'''' --'转义符 
    end

    if @TechType<>'ALL'
    begin 
    set @chrSQL=@chrSQL+' and  a4.Code_Name ='''+@TechType+''''  
    end

    if @Size<>'ALL'
    begin 
    set @chrSQL= @chrSQL+' and  a2.Code_Name = '''+@Size+''''  
    end

    if @TACFilm<>'ALL'
    begin 
    set @chrSQL=@chrSQL+' and a6.Code_Name = '''+@TACFilm+''''  
    end

    if @Treatment<>'ALL'
    begin 
    set @chrSQL=@chrSQL+' and  a5.Code_Name = '''+@Treatment+''''  
    end

    if @Thickness<>'ALL'
    begin 
    set @chrSQL=@chrSQL+' and  a3.Code_Name = '''+@Thickness+''''  
    end

    if @ModelGroup<>'ALL'
    begin 
    set @chrSQL=@chrSQL+' and  aa.PGrade = '''+@ModelGroup+''''  
    end

    set @chrSQL=@chrSQL+ ' order by CMALPH'

    exec (@chrSQL)



    后台代码:

        void bindDataQuery()
        {
            
    //连接数据库,并插入数据
            SqlParameter[] sqlParam = new SqlParameter[7];

            sqlParam[
    0= new SqlParameter("@Application", SqlDbType.NVarChar, 50, ParameterDirection.Input, false00"@Application", DataRowVersion.Default, drpApplication.SelectedValue.Trim());
            sqlParam[
    1= new SqlParameter("@TechType", SqlDbType.NVarChar, 50, ParameterDirection.Input, false00"@TechType", DataRowVersion.Default, drpTech.SelectedValue.Trim());
            sqlParam[
    2= new SqlParameter("@Size", SqlDbType.NVarChar, 50, ParameterDirection.Input, false00"@Size", DataRowVersion.Default, drpSize.SelectedValue.Trim());
            sqlParam[
    3= new SqlParameter("@TACFilm", SqlDbType.NVarChar, 50, ParameterDirection.Input, false00"@TACFilm", DataRowVersion.Default, drpTAC.SelectedValue.Trim());
            sqlParam[
    4= new SqlParameter("@Treatment", SqlDbType.NVarChar, 50, ParameterDirection.Input, false00"@Treatment", DataRowVersion.Default, drpTreatment.SelectedValue.Trim());
            sqlParam[
    5= new SqlParameter("@Thickness", SqlDbType.NVarChar, 50, ParameterDirection.Input, false00"@Thickness", DataRowVersion.Default, drpThickness.SelectedValue.Trim());
            sqlParam[
    6= new SqlParameter("@ModelGroup", SqlDbType.NVarChar, 50, ParameterDirection.Input, false00"@ModelGroup", DataRowVersion.Default, drpGrade.SelectedValue.Trim());

            DataSet ds 
    = db.GetDataSet("procBP_Cost_Query", sqlParam);

            grdPrice.DataSource 
    = ds.Tables[0];
            grdPrice.DataBind();
     
        }
  • 相关阅读:
    C# 操作Excel之旁门左道
    C#数据类型、控件、数据类型、ADO.NET等命名规范
    tab 切换函数
    ASP.NET常用JS脚本整理
    实现MSMQ消息加密的安全实践
    关于jQuery中的offset()和position()
    SQL中使用update inner join和delete inner join
    setTimeout和setInterval
    设计漂亮的样式表是一门艺术(译) (转)
    使用jQuery制作手风琴效果(转)
  • 原文地址:https://www.cnblogs.com/amadeuslee/p/3744486.html
Copyright © 2020-2023  润新知