如下面存储过程中的部分语句
....................
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这存储过程的时候 没有返回记录集这是什么原因导致的呢???
....................
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这存储过程的时候 没有返回记录集这是什么原因导致的呢???
。。
这条件能满足啊
但是Execute没有返回值谢谢大家了
但是增加一个条件以后 改为:set @sqlstr = N'select * from keyevent where convert(datetime,starttime)> ''' + @StartTime + N''' and DestObject =''' + @DestObject + N'''' 则没有返回值了数据库表中有DestObject这字段。
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' 附近有语法错误。
也不行。帮你顶下。