vc的ado调用存储过程。情况是这样的:
在我的存储过程中,用了两种执行方法,分别是:
exec (@sql)
@sql这样声明:DECLARE @Sql varchar(4000)
以及
exec sp_executesql @sql
@sql这样声明:DECLARE @Sql nvarchar(4000) 当字符串过长的时候,我会用第一种方法,并且将字符串拼接:
exec (@sql + @sql1 + @sql2) 现在遇到了字符串过长,并且需要输出float类型的参数。
我只这样写:
SQL codeexec sp_executesql @sql +@sql1 +@sql2, N'@OutCountValue float output',@OutCountValue output
但出现错误提示:
“消息 102,级别 15,状态 1,过程 GetAllAudienceRating,第 75 行
'+' 附近有语法错误。”
在我的存储过程中,用了两种执行方法,分别是:
exec (@sql)
@sql这样声明:DECLARE @Sql varchar(4000)
以及
exec sp_executesql @sql
@sql这样声明:DECLARE @Sql nvarchar(4000) 当字符串过长的时候,我会用第一种方法,并且将字符串拼接:
exec (@sql + @sql1 + @sql2) 现在遇到了字符串过长,并且需要输出float类型的参数。
我只这样写:
SQL codeexec sp_executesql @sql +@sql1 +@sql2, N'@OutCountValue float output',@OutCountValue output
但出现错误提示:
“消息 102,级别 15,状态 1,过程 GetAllAudienceRating,第 75 行
'+' 附近有语法错误。”
解决方法:
1、如果2005或者以上,使用DECLARE @Sql nvarchar(max)
2、如果2000,那只能分几次执行了,碰到需要传递数据的,只能用临时表传递,比较麻烦,不举例了
看到回复成功看不到回复
还是就到4000的大小的地方就打住,不能写入了。
是这样写的。declare @sql4 nvarchar(max)
set @sql4 = @sql+@sql2+@sql3
exec sp_executesql @sql4 ,N'@OutCountValue float output',@OutCountValue output然后@sql+@sql2+@sql3这三个都定义成nvarchar(max)
是这样吗