写了一个存储过程能实现删除不定表,不定条件的功能,编译成功,但是执行时会报错,高手指点下迷经??
前面的变量啥的都声明过了exec('deletefrom'+@tabName+'wheredate='+@date);编译成功,但是执行时where的参数报错?如果不加w...
前面的变量啥的都声明过了
exec ('delete from ' + @tabName +'where date ='+ @date);编译成功,但是执行时where的参数报错?
如果不加where那一部分就能够执行,加了就不行了
create procedure checkDate
@tableName varchar(50),
@date datetime
as
exec ('select * from '+@tableName+ ' where date >= '+ convert(varchar,@date))
--exec checkDate 'ARS_DD_POI_HIS','2010-12-1'
改了以后未用最后一句执行时就报错,
报错信息如下:
消息 156,级别 15,状态 1,过程 checkDate,第 5 行
关键字 'convert' 附近有语法错误。 展开
exec ('delete from ' + @tabName +'where date ='+ @date);编译成功,但是执行时where的参数报错?
如果不加where那一部分就能够执行,加了就不行了
create procedure checkDate
@tableName varchar(50),
@date datetime
as
exec ('select * from '+@tableName+ ' where date >= '+ convert(varchar,@date))
--exec checkDate 'ARS_DD_POI_HIS','2010-12-1'
改了以后未用最后一句执行时就报错,
报错信息如下:
消息 156,级别 15,状态 1,过程 checkDate,第 5 行
关键字 'convert' 附近有语法错误。 展开
2个回答
展开全部
exec ('select * from '+@tableName+ ' where date >= '+ convert(varchar,@date))
这里的varchar没有设置长度,这里长度是必须设置的。
改成下面的就可以了
exec ('select * from '+@tableName+ ' where date >= '+ convert(varchar(10),@date))
这里的varchar没有设置长度,这里长度是必须设置的。
改成下面的就可以了
exec ('select * from '+@tableName+ ' where date >= '+ convert(varchar(10),@date))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CREATE PROCEDURE checkDate
@tableName nvarchar(50),
@date datetime
AS
DECLARE @SQL NVARCHAR(500)
SET @SQL = N'SELECT * FROM '+@tableName+ N' WHERE DATE >=@Date'
EXEC sp_executesql @SQL,N'@Date DATETIME',@Date
@tableName nvarchar(50),
@date datetime
AS
DECLARE @SQL NVARCHAR(500)
SET @SQL = N'SELECT * FROM '+@tableName+ N' WHERE DATE >=@Date'
EXEC sp_executesql @SQL,N'@Date DATETIME',@Date
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询