游乐园经营游戏大全:将'Select Goods.* from Goods,GoodDetail where ( Goods.SalePrice >=' 转换为数据类型为 int 发生语法错

来源:百度文库 编辑:高考问答 时间:2024/05/01 23:13:57
CREATE PROCEDURE GetGoodsBySearch
(
@GoodName nvarchar(50),
@Price1 int,
@Price2 int,
@Engine nvarchar(50),
@Gear_Box nvarchar(50),
@ExhaustQuantity nvarchar(50),
@FuelSys nvarchar(50),
@Carriage nvarchar(50)

) AS
declare @Sqlstring varchar(500)
set @Sqlstring=""
if (@Engine<>"") set @Sqlstring='(GoodDetail.Engine='+@Engine+') and '
if (@Gear_box<>"") set @Sqlstring=@Sqlstring+' (GoodDetail.Gear_Box='+@Gear_Box+') and '
if (@ExhaustQuantity<>"") set @Sqlstring=@Sqlstring+' (GoodDetail.ExhaustQuantity='+@ExhaustQuantity+') and '
if (@FuelSys<>"") set @Sqlstring=@Sqlstring+' (GoodDetail.FuelSys='+@FuelSys+') and '
if (@Carriage<>"") set @Sqlstring=@Sqlstring+' (GoodDetail.Carriage='+convert(nvarchar,@Carriage)+') and '

set @Sqlstring='Select Goods.* from Goods,GoodDetail where '+ @Sqlstring +'( Goods.SalePrice >='+@Price1+') and ( Goods.SalePrice <'+@Price2+')'

set @Sqlstring=@Sqlstring+' and (Goods.GoodName=GoodDetail.GoodName) '
execute sp_executesql @Sqlstring
GO
关键是 Price的地方 因为Price是INT量

GoodDetail.Gear_Box='+@Gear_Box+'改成
GoodDetail.Gear_Box=cast(@Gear_Box as int)

declare @Sqlstring varchar(500)改为declare @Sqlstring nvarchar(500)