如下面存储过程中的部分语句
....................
declare @sqlstr nvarchar(400)
set @sqlstr = N'select * from keyevent where convert(datetime,starttime) > ''' + @StartTime  + N''''
....................如上,这种语句写法的规则是什么??那上面的分号又各是什么意思呢??如果我对上面语句再加上一个一个查询条件,
写成: set @sqlstr = N'select * from keyevent where convert(datetime,starttime)> ''' + @StartTime + N''' and DestObject =''' + @DestObject + N'''' 
却Execute这存储过程的时候 没有返回记录集这是什么原因导致的呢???

解决方案 »

  1.   

    and DestObject =''' + @DestObject + N''''  这个条件你满足吗
      

  2.   

    DestObject =' + @DestObject + N'
    。。
      

  3.   


    这条件能满足啊  
    但是Execute没有返回值谢谢大家了
      

  4.   

    现在如果是 set @sqlstr = N'select * from keyevent where convert(datetime,starttime) > ''' + @StartTime  + N''''  则程序没问题,能查询。
    但是增加一个条件以后 改为:set @sqlstr = N'select * from keyevent where convert(datetime,starttime)> ''' + @StartTime + N''' and DestObject =''' + @DestObject + N''''  则没有返回值了数据库表中有DestObject这字段。
      

  5.   

    declare @fname varchar(20) 
    set @fname = 'FiledName' 
    Select @fname from tableName              -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 
    Exec('select ' + @fname + ' from tableName')     -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 
    declare @fname varchar(20) 
    set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) 
    set @s = 'select ' + @fname + ' from tableName' 
    Exec(@s)                -- 成功 
    exec sp_executesql @s   -- 此句会报错 declare @s Nvarchar(1000)  -- 注意此处改为nvarchar(1000) 
    set @s = 'select ' + @fname + ' from tableName' 
    Exec(@s)                -- 成功     
    exec sp_executesql @s   -- 此句正确 根据上面所说:
    变量动态SQL写法应为:  ' + @variable + '
    则上面的写法应该为:
    set @sqlstr = N'select * from keyevent where  DestObject = ' + @DestObject + ' and convert(datetime,starttime) > ' + @StartTime + ''
    执行后提示:
    服务器: 消息 170,级别 15,状态 1,行 5
    第 5 行: '3' 附近有语法错误。
    也不行。帮你顶下。