存储过程 '1' 附近有语法错误

来源:百度知道 编辑:UC知道 时间:2024/09/20 07:00:14
下面的存储过程,是执行一个复合查询,直接执行这个存储过程没有问题,但是C#执行就会报错。

麻烦哪位高手指点一下,如果能用另外的方法写存储过程实现这个功能也可!

@StarID varchar(20),
@ProvinceID int,
@CityID int,
@LinkNumber int,
@StartDate datetime,
@endDate datetime,
@HotelName varchar(50),
@State int
)

AS
DECLARE @MainStr VARCHAR(1000)
set @MainStr='SELECT * FROM HotelInfo where LinkNumber='+convert(varchar(20),@LinkNumber)+'and IsProcess=0 and State='+convert(varchar(20),@State)
if (@StartDate<>'' and @endDate<>'')
set @MainStr =@MainStr+'and ReserveDate BETWEEN '+convert(varchar(30),@StartDate)+' and'+ convert(varchar(30),@endDate)
if @StarID <>'请选择'
set @MainStr =@MainStr+'and StarID='+@StarID

if @ProvinceID<>''
set @MainStr=@MainStr+ 'and ProvinceID='+convert(varchar(20),@ProvinceID)

if @CityID<>''

注意日期的转换

AS
DECLARE @MainStr VARCHAR(1000)
set @MainStr='SELECT * FROM HotelInfo where LinkNumber='+convert(varchar(20),@LinkNumber)+'and IsProcess=0 and State='+convert(varchar(20),@State)
if (@StartDate<>'' and @endDate<>'')
set @MainStr =@MainStr+'and ReserveDate BETWEEN '''+convert(varchar(30),@StartDate,120)+''' and '''+ convert(varchar(30),@endDate,120)+''''
if @StarID <>'请选择'
set @MainStr =@MainStr+'and StarID='+@StarID

if @ProvinceID<>''
set @MainStr=@MainStr+ 'and ProvinceID='+convert(varchar(20),@ProvinceID)

if @CityID<>''
set @MainStr=@MainStr+ 'and CityID='+convert(varchar(20),@CityID)

if @HotelName<>''
set @MainStr=@MainStr+ 'and HotelName like %'+@HotelName+'%'

set @M