这个存储过程哪里错了?
CREATE PROCEDURE hotel_GetGiftProvide
@cardsCode char(10),
@giftCode varchar(50)
AS
declare @s nvarchar(4000)
set @s='select * from table_GiftGiving where 1=1 '
if @cardsCode<>''
set @s=@s + ' and cardsID in (select cardsID from table_Cards where
cardsCode='+@cardsCode+') '
if @giftCode<>''
set @s=@s + ' and giftID in (select giftID from table_Gift where
giftCode like %'+@giftCode+'%)'
EXEC (@s)
GO
在程序中执行,报错“第1行,‘01’附近有语法错误。”
注:01是变量@giftCode的值
怎么回事?请帮忙看看