再问一下: 在写存储过程的时候究竟是只传入一个字符串,然后让程序去执行,还是传入n个参数在存储过程里面写要执行的字符串那种效率要高.example: ALTER PROCEDURE Hctrack_login.查询a表 @input1 varchar(1000)=null AS declare @sql varchar(1000) set @sql = 'select * from 部队基本情况 where ' +@input1 exec(@sql) ALTER PROCEDURE Hctrack_login.查询a表 @参参数数1 varchar(20) = null, @参数2 char(10) = null, @参数3 varchar(40) = null AS declare @sql varchar(1000) set @sql = 'select * from a表 where ' if (@参数1<>'') set @sql = @sql+ '(参数1='+ @参数1 +')and' if (@参数2<>'') set @sql = @sql+ '(参数2='+ @参数2 +')and' if (@参数3<>'') set @sql = @sql+ '(参数3='+ @参数3 +')and' set @sql = left(@sql,len(@sql)-3) exec(@sql) RETURN 0
如果单引号出现在SQL语句中,要用两个单引号代替,这样不会和关键字搞混
结果:
@sql = ... 日期 = 2002-08-13 ...set @sql = @sql+ '日期 = '''+ CONVERT ( varchar(10) ,@日期,120) +''','
结果:
@sql = ... 日期 = '2002-08-13' ...
你在查询分析器执行select 日期 = 2002-08-13
和
select 日期 = '2002-08-13'就知道区别了
在写存储过程的时候究竟是只传入一个字符串,然后让程序去执行,还是传入n个参数在存储过程里面写要执行的字符串那种效率要高.example:
ALTER PROCEDURE Hctrack_login.查询a表
@input1 varchar(1000)=null
AS
declare @sql varchar(1000)
set @sql = 'select * from 部队基本情况 where ' +@input1
exec(@sql)
ALTER PROCEDURE Hctrack_login.查询a表
@参参数数1 varchar(20) = null,
@参数2 char(10) = null,
@参数3 varchar(40) = null
AS
declare @sql varchar(1000)
set @sql = 'select * from a表 where '
if (@参数1<>'') set @sql = @sql+ '(参数1='+ @参数1 +')and'
if (@参数2<>'') set @sql = @sql+ '(参数2='+ @参数2 +')and'
if (@参数3<>'') set @sql = @sql+ '(参数3='+ @参数3 +')and'
set @sql = left(@sql,len(@sql)-3)
exec(@sql)
RETURN 0