当前位置: 代码迷 >> Sql Server >> 小弟遇一sql server动态表名有关问题,求高手帮忙
  详细解决方案

小弟遇一sql server动态表名有关问题,求高手帮忙

热度:87   发布时间:2016-04-27 20:08:08.0
小弟遇一sql server动态表名问题,求高手帮忙!
我们数据库使用存储过程,向动态的表插入数据,为了实现动态表名,将表名参数化处理,将整个执行的sql语句作为字符串。但这时where后面的条件涉及到datetime类型的判断,此时就报错了,不知有没有高手教教怎么处理阿。

例子如下
declare   @tablename   nvarchar(20)
declare   @sql
declare   @dt   datetime

set   @sql= 'insert   into   '[email protected]+ '   select   *   from   oritable   where   dt   between   dateadd(mi,-10,@dt)   and   @dt '
此时数据库说要声明dt为标量型变量。
翻了sqlserver的书也没查到什么是标量变量,求高手指点。

------解决方案--------------------
--try
declare @tablename nvarchar(20)
declare @sql
declare @dt datetime

set @sql= 'insert into '[email protected]+ ' select * from oritable where dt between dateadd(mi,-10, ' ' '[email protected]+ ' ' ') and ' ' '[email protected]+ ' ' ' '

------解决方案--------------------
declare @tablename nvarchar(20)
declare @sql
declare @dt datetime

set @sql= 'insert into '[email protected]+ ' select * from oritable where dt between dateadd(mi,-10, ' ' ' + Convert(Varchar, @dt, 120) + ' ' ') and ' ' ' + Convert(Varchar, @dt, 120) + ' ' ' '
EXEC(@sql)
  相关解决方案