Declare @SeverName As Varchar(100)
Set @SeverName ='master.dbo.'
declare @JOBLastRunDate as varchar(50)
set @JOBLastRunDate='2007/07/01'
declare @RunDate as varchar(30)
set @RunDate='2008/11/11'
declare @sql varchar(2000)
set @sql=
'
select * from @SeverNamesysxlogins where xdate1 between ''@JOBLastRunDate'' and ''@RunDate'' 
'
set @sql=replace(@sql,'@SeverName',@SeverName)
set @sql=replace(@sql,'@JOBLastRunDate',@JOBLastRunDate)
set @sql=replace(@sql,'@RunDate',@RunDate)
--print(@sql)
exec(@sql)
对拼接字符串有点讨厌,拼接的时候还经常出错,这是我最近另写的一种方法
希望大家给提点意见,看看有什么需要修正的地方没有,共同学习
另外,大家还有其他好的方法没有,望不吝赐教

解决方案 »

  1.   

    O
    这样做有点多此一举print显示
      

  2.   

    变量出现的地方多了,你去拼接的话那也太费事了,不过里面出现多少次,只需要一个replace,就能全部替换掉,代码也显得整洁
      

  3.   

    变量必须能区分才能保证无问题
    set @sql=replace(@sql,'@JOBLast',@JOBLast) 
    set @sql=replace(@sql,'@JOBLastRunDate',@JOBLastRunDate) 如果是上面两句,就会出问题
      

  4.   

    不是有个exec_sql 什么这类的东西吗?