有输出参数的存储过程一定用sp_executesql 并且sql语句的拼接问题。 exec sp_executesql @sql +@sql1 +@sql2+N' ,@OutCountValue float output',@OutCountValue output 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declare @sql3 nvarchar(4000)set @sql3=@sql +@sql1 +@sql2exec sp_executesql @sql3, N'@OutCountValue float output',@OutCountValue output 这样不行啊,@sql3nvarchar(4000)这个最大值就是4000,不能装下所有的sql语句啊 你是SQL 2005么?改用 NVARCHAR(MAX) 试试看 declare @sql3 nvarchar(max)set @sql3=@sql +@sql1 +@sql2exec sp_executesql @sql3, N'@OutCountValue float output',@OutCountValue output 同志们啊,max最大值就已经是4000了。要不然我不用费那么大劲做语句拼接了。 应该是问题是这样子的:(1)sql语句远大于4000,应该是3个4000;(2)有输出参数且参数类型是float,有输出参数的时候,就需要采用sp_executesql 这个。但是exec sp_executesql @sql +@sql1 +@sql2, N'@OutCountValue float output',@OutCountValue output这样写,会提示sp_executesql @sql +@sql1 +@sql2部分的+前后有语法错误。而且刚才2楼和3楼的朋友的方法也不行,因为2楼的那个依然是“+前后有语法错误”;而3楼的是因为最大值就是4000,即使用max还是4000,所以并不能将拼接语句都放在@sql3里。 写个存储过程,SQL参数传进去执行,返回结果 我写的就是存储过程呀。。现在是存储过程中的sql语句过长(3个4000还要多),没有办法执行了的问题。 @sql1+@sql2+@sql3 这三个类型 都应该为 nvarchar 类型的 不错,给的 变量都应该是 varchar的他们拼接在一起,正好我今天 上午遇到了。 @sql超长,肯定是其中某个部分超长,把这部分分离出来,作为参数(或多个参数)执行就可以了@p //超长参数@sql =N'**********@tp*********'execute sp_executesql @sql, N'@tp nvarchar(max)', @tp=@p 同一服务器上,俩个SQLSERVER实例,怎样保证实例A与实例B同时可以远程连接 游标使用基础问题,有答案立即结帖 crc考试题 SBO格搜的问题 问大家一个简单的问题,回答有理就发分。。多谢大家啦。。 System.Data.SqlClient.SqlException: 列名 'yuguomin' 无效 SQL Server7能够导入6.5的数据库吗 求助,这是什么错误? 请问只知道备份文件如何恢复数据库? 求SQL Server 2000快速入门资料(E-BOOK) 怎样安装SQL Server Management Studio T-sql如何实现分页,比如:取中间的10条记录
set @sql3=@sql +@sql1 +@sql2
exec sp_executesql @sql3, N'@OutCountValue float output',@OutCountValue output
改用 NVARCHAR(MAX) 试试看
set @sql3=@sql +@sql1 +@sql2
exec sp_executesql @sql3, N'@OutCountValue float output',@OutCountValue output
(1)sql语句远大于4000,应该是3个4000;
(2)有输出参数且参数类型是float,有输出参数的时候,就需要采用
sp_executesql 这个。
但是exec sp_executesql @sql +@sql1 +@sql2, N'@OutCountValue float output',@OutCountValue output这样写,会提示sp_executesql @sql +@sql1 +@sql2部分的+前后有语法错误。而且刚才2楼和3楼的朋友的方法也不行,因为2楼的那个依然是“+前后有语法错误”;而3楼的是因为最大值就是4000,即使用max还是4000,所以并不能将拼接语句都放在@sql3里。
写个存储过程,SQL参数传进去执行,返回结果
他们拼接在一起,
正好我今天 上午遇到了。
@p //超长参数
@sql =N'**********@tp*********'
execute sp_executesql
@sql,
N'@tp nvarchar(max)',
@tp=@p