搜索酒店,用到城市,价格范围,酒店名称,星级4个条件,开始用存储过程做,有错误,后来改用程序拼SQL执行,成功了。
现在有几个问题,希望大家给予帮助:
    1、查询条件是否要指定默认值,因为用户不可能每个条件都输入,默认值在程序里指定还是存储过程里呢?
    2、存储过程拼SQL语句的时候,参数的引号问题:
         
多条件查询程序处理与数据库处理ALTER  proc csp_x_HotelSearch
多条件查询程序处理与数据库处理
@Cname varchar(100),    --城市
多条件查询程序处理与数据库处理
@BP varchar(100),    --价格起
多条件查询程序处理与数据库处理
@EP varchar(100),    --价格止
多条件查询程序处理与数据库处理
@Ename varchar(200),    --酒店名
多条件查询程序处理与数据库处理
@Estar varchar(50)    --星级
多条件查询程序处理与数据库处理
as
多条件查询程序处理与数据库处理
declare @sql varchar(1000)
多条件查询程序处理与数据库处理
declare @condition varchar(500)
多条件查询程序处理与数据库处理
多条件查询程序处理与数据库处理
set @sql='select a.Enum,b.Ifullname,c.Elevel,d.Cname,a.PStitle,a.PSprice,e.UTid from dbo.at_ProductService_Eid a
多条件查询程序处理与数据库处理left join dbo.at_Info_Eid b on a.Enum=b.Enum
多条件查询程序处理与数据库处理left join dbo.at_EnterpriseUser c on a.Enum=c.Enum
多条件查询程序处理与数据库处理left join dbo.at_City d on b.Cid=d.Cid
多条件查询程序处理与数据库处理left join dbo.at_Type_CPid e on a.T_UTid=e.UTid
多条件查询程序处理与数据库处理where a.IsDelete=0 and c.Eisfreeze=0 and 
多条件查询程序处理与数据库处理e.CPid in (select f.CPid from dbo.at_ColumnProductService_Did f where f.ETid=2) 
多条件查询程序处理与数据库处理and (d.Cname like 
''%'+@Cname+'%'' or '+@Cname+' is null) 
多条件查询程序处理与数据库处理and (b.Ifullname like 
''%'+@Ename+'%'' or '+@Ename+' is null) 
多条件查询程序处理与数据库处理and (c.Elevel >=
'+@Estar+' or '+@Estar+' is null) 
多条件查询程序处理与数据库处理and 
'
多条件查询程序处理与数据库处理
set @condition=
多条件查询程序处理与数据库处理
case 
多条件查询程序处理与数据库处理
when @BP !='' and @EP !=''  then   'left(a.PSprice,len(a.PSprice)-1) between '+@BP+' and '+@EP
多条件查询程序处理与数据库处理
when @BP !='' and @EP =''   then   'left(a.PSprice,len(a.PSprice)-1) >= '+@BP
多条件查询程序处理与数据库处理
when @EP !='' and @BP =''   then   'left(a.PSprice,len(a.PSprice)-1) <= '+@EP
多条件查询程序处理与数据库处理
end
多条件查询程序处理与数据库处理
set @sql = @sql + @condition
多条件查询程序处理与数据库处理
exec(@sql)
多条件查询程序处理与数据库处理

    3、程序里动态SQL的方法:
多条件查询程序处理与数据库处理string sql = "select a.Enum,b.Ifullname,c.Elevel,d.Cname,a.PStitle,a.PSprice,e.UTid from dbo.at_ProductService_Eid a ";
多条件查询程序处理与数据库处理        sql 
+= "left join dbo.at_Info_Eid b on a.Enum=b.Enum "
多条件查询程序处理与数据库处理        sql 
+= "left join dbo.at_EnterpriseUser c on a.Enum=c.Enum ";
多条件查询程序处理与数据库处理        sql 
+= "left join dbo.at_City d on b.Cid=d.Cid ";
多条件查询程序处理与数据库处理        sql 
+= "left join dbo.at_Type_CPid e on a.T_UTid=e.UTid ";
多条件查询程序处理与数据库处理        sql 
+= "where a.IsDelete=0 and c.Eisfreeze=0 and ";
多条件查询程序处理与数据库处理        sql 
+= "e.CPid in (select f.CPid from dbo.at_ColumnProductService_Did f where f.ETid=2)  ";
多条件查询程序处理与数据库处理        
try
                GridView1.DataBind();

相关文章:

  • 2021-09-17
  • 2022-12-23
  • 2021-06-03
  • 2021-11-23
  • 2022-12-23
猜你喜欢
  • 2021-05-19
  • 2022-12-23
  • 2021-04-22
  • 2022-12-23
  • 2021-07-20
  • 2022-12-23
  • 2021-10-05
相关资源
相似解决方案