SQL存储过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。

ALTERPROCEDURE[dbo].[UpDown](@ETLint,@ToolIDuniqueidentifier)ASdeclare@Sqlvarchar(500... ALTER PROCEDURE [dbo].[UpDown]
(
@ETL int,
@ToolID uniqueidentifier
)
AS
declare @Sql varchar(500)
set @SQL=' UPDATE CH_Tool_List SET '
BEGIN
if @ETL=0
begin
set @SQL=@SQL+' UpCount = UpCount + 1 '
end
else
begin
set @SQL=@SQL+' DownCount = DownCount + 1 '
end
set @SQL=@SQL+' WHERE ToolID = '+convert(varchar(40),@ToolID)
-- Execution the query
exec sp_executesql @SQL
select @@Error
END

错误提示:存储过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。请高手指点迷津,谢谢!
展开
 我来答
vwin9
2009-07-02 · TA获得超过133个赞
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:95万
展开全部
将你原来的
set @SQL=@SQL+' WHERE ToolID = '+convert(varchar(40),@ToolID)
改为
set @SQL=@SQL+' WHERE ToolID = '''+convert(varchar(40),@ToolID)+''''
就行了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
犀利的胡茬子
2009-07-06 · TA获得超过663个赞
知道小有建树答主
回答量:853
采纳率:50%
帮助的人:582万
展开全部
exec sp_executesql @SQL --这里出错
你要把变量declare @sql varchar(500) 改成 declare @sql nvarchar(500)
看见了吗 多了个n
或者 把 exec sp_executesql @SQL 改成 exec(@sql)
ok了 问题应该解决了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hotyxm
2009-07-02 · TA获得超过1028个赞
知道大有可为答主
回答量:1698
采纳率:50%
帮助的人:1181万
展开全部
set @SQL=@SQL+' WHERE ToolID = '+convert(varchar(40),@ToolID)
-- Execution the query
--exec sp_executesql @SQL
print @SQL

看一下你的@sql变量是不是取到值了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式