22,206
社区成员
发帖
与我相关
我的任务
分享
ALTER PROCEDURE QueryRoll
(
@材质 nvarchar(20)=null,
@是否可用 nvarchar(8)=null,
@入厂日期1 datetime=null,
@入厂日期2 datetime=null,
@总轧制量1 float=null,
@总轧制量2 float=null
)
AS
DECLARE @SQLStr nvarchar(400)
SET @SQLStr ='select 轧辊编号,材质,重量,适用品种,适用区域,是否精开,生产厂家,硬度,总轧制量,类别,当前辊径,是否可用 from dbo.BasicInfo where 1=1'
IF(@材质 is not null)
SET @SQLStr= @SQLStr+' AND 材质='''+@材质 +''''
IF(@是否可用 is not null)
SET @SQLStr=@SQLStr+' AND 是否可用='''+@是否可用 +''''
IF(@入厂日期1 is not null)
SET @SQLStr=@SQLStr+' AND 入厂日期1 BETWEEN '''+convert(nvarchar(20),@入厂日期1,111)+''''+' AND '''+convert(nvarchar(20),@入厂日期2,111)++''''
IF(@总轧制量1 is not null)
SET @SQLStr=@SQLStr+' AND 总轧制量 BETWEEN cast('+cast(@总轧制量1 as nvarchar)+' as float) AND cast('+cast(@总轧制量2 as nvarchar)+' as float)'
EXEC(@SQLStr)
RETURN
这边其就是加引号的问题。。。你在加引号时可以把它当成是在c#里面写这一些东西。。。那样你应该就会明白这个引号怎么加了。还有你要会利用好vs工具,在里面可以单步执行存储过程(vs 2005可以,2003不知道可不可以),你可以去网上搜一下,怎么单步调试存储过程