写了一个存储过程能实现删除不定表,不定条件的功能,编译成功,但是执行时会报错,高手指点下迷经??

前面的变量啥的都声明过了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' 附近有语法错误。
展开
 我来答
344791576
2010-12-07 · TA获得超过1396个赞
知道小有建树答主
回答量:913
采纳率:0%
帮助的人:222万
展开全部
exec ('select * from '+@tableName+ ' where date >= '+ convert(varchar,@date))
这里的varchar没有设置长度,这里长度是必须设置的。
改成下面的就可以了
exec ('select * from '+@tableName+ ' where date >= '+ convert(varchar(10),@date))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83200e1
2010-12-08 · TA获得超过101个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:125万
展开全部
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
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式