@sql nvarchar(max) 5900个字符输出来不完整

zhengyingcan 2017-08-04 05:17:49
declare @sql nvarchar(max)
declare @books nvarchar(max)
declare @insertbooks nvarchar(max)
set @books='dsdfsdf'
set @insertbooks='wweewwer'

SET @sql='INSERT INTO [UFDATA_'+@books+'_2017]..Inventory (中间省略5900个字符

iOverlapDay,bPiece,bSrvItem,bSrvFittings,fMaxSupply,fMinSplit,bSpecialOrder,bTrackSaleBill,cInvMnemCode FROM [UFDATA_'+@insertbooks+'_2017]..Inventory
WHERE cInvSubCode =@Code'
select @sql


执行SQL 用的方式 是 exec sp_executesql @sql
输出来的结果不完整,结尾的位置,少了一千个字符, 程序一定要是 nvarchar ,不能是 varchar 。,怎么办呢

...全文
678 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2017-08-05
  • 打赏
  • 举报
回复
如果字符串超长,你用select 和print会打印不全,但执行没问题。 你可以将SQL输出到文件,看文件的内容:

    DECLARE @OLE            INT 
    DECLARE @FileID         INT 
 
 
    EXECUTE sp_OACreate 'Scripting.FileSystemObject', @OLE OUT 
    EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileID OUT, @File, 8, 1 
    EXECUTE sp_OAMethod @FileID, 'WriteLine', Null, @Text
    EXECUTE sp_OADestroy @FileID 
    EXECUTE sp_OADestroy @OLE 

二月十六 2017-08-04
  • 打赏
  • 举报
回复
SELECT LEN(@sql)
看看结果是什么?
OwenZeng_DBA 2017-08-04
  • 打赏
  • 举报
回复
引用 3 楼 zhengyingcan 的回复:
2楼的 ,或者你把这5900个字符分成2段,然后用+号连接 这个方法 真好用
满意了就结贴
zhengyingcan 2017-08-04
  • 打赏
  • 举报
回复
2楼的 ,或者你把这5900个字符分成2段,然后用+号连接 这个方法 真好用
OwenZeng_DBA 2017-08-04
  • 打赏
  • 举报
回复
引用 楼主 zhengyingcan 的回复:
declare @sql nvarchar(max) declare @books nvarchar(max) declare @insertbooks nvarchar(max) set @books='dsdfsdf' set @insertbooks='wweewwer' SET @sql='INSERT INTO [UFDATA_'+@books+'_2017]..Inventory (中间省略5900个字符 iOverlapDay,bPiece,bSrvItem,bSrvFittings,fMaxSupply,fMinSplit,bSpecialOrder,bTrackSaleBill,cInvMnemCode FROM [UFDATA_'+@insertbooks+'_2017]..Inventory WHERE cInvSubCode =@Code' select @sql 执行SQL 用的方式 是 exec sp_executesql @sql 输出来的结果不完整,结尾的位置,少了一千个字符, 程序一定要是 nvarchar ,不能是 varchar 。,怎么办呢
尝试修改下试试呢
SET @sql='INSERT INTO [UFDATA_'+@books+CAST('_2017]..Inventory (中间省略5900个字符 

iOverlapDay,bPiece,bSrvItem,bSrvFittings,fMaxSupply,fMinSplit,bSpecialOrder,bTrackSaleBill,cInvMnemCode FROM [UFDATA_' AS NVARCHAR(max))
把超过5900的字符进行下转换,,或者你把这5900个字符分成2段,然后用+号连接
吉普赛的歌 2017-08-04
  • 打赏
  • 举报
回复
只是输出有问题, 实际执行没问题吧?

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧