首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-01-03 
小弟遇一sql server动态表名问题,求高手帮忙!我们数据库使用存储过程,向动态的表插入数据,为了实现动态表

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

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

set   @sql= 'insert   into   '+@tablename+ '   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 '+@tablename+ ' select * from oritable where dt between dateadd(mi,-10, ' ' '+@dt+ ' ' ') and ' ' '+@dt+ ' ' ' '

[解决办法]
declare @tablename nvarchar(20)
declare @sql
declare @dt datetime

set @sql= 'insert into '+@tablename+ ' select * from oritable where dt between dateadd(mi,-10, ' ' ' + Convert(Varchar, @dt, 120) + ' ' ') and ' ' ' + Convert(Varchar, @dt, 120) + ' ' ' '
EXEC(@sql)

热点排行